Как проверить, существует ли первичный ключ в MySQL

0

Я пробовал несколько sql-скриптов, но не смог. Вот тот, с которым я приблизился:

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = schema()
AND   table_name   = 'my_table_name'
AND   index_name   = 'column_name';
Теги:

2 ответа

2

Я думаю, что вам нужно ниже выражение

https://www.db-fiddle.com/f/jbdzXwpWkYichsBL1ib2Rj/2

select constraint_name
  from information_schema.table_constraints
 where table_name = 'mytable'
   and table_schema = 'myschema'
   and constraint_name = 'PRIMARY';

или ниже https://www.db-fiddle.com/f/jbdzXwpWkYichsBL1ib2Rj/3

SELECT EXISTS(
  SELECT 1
  FROM information_schema.columns
  WHERE 
     table_name='messages'
     and column_key = 'PRI'
) As HasPrimaryKey;
0
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = schema()
AND column_key = 'PRI'
AND table_name = 'my_table_name'
AND column_name = 'column_name';
  • 0
    Почему index_name? Не существует в системной таблице столбцов
  • 0
    Он работает с column_name вместо index_name. Мой следующий вопрос по этому вопросу заключается в том, что когда я ALTER TABLE my_table_name DROP PRIMARY KEY; первичный ключ с помощью ALTER TABLE my_table_name DROP PRIMARY KEY; столбец все еще обнаруживается.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню