Как определить в запросе, есть ли у таблицы первичный ключ или нет

Можно ли написать запрос, который определяет, имеет ли таблица первичный ключ или нет?

SELECT * FROM sysobjects WHERE id = OBJECT_ID('TRS') and xtype = PK

Если у него нет первичного, то ничего не вернется.

В этой ссылке автор говорит об использовании Xtype но, похоже, это старый термин.

1 ответ

Решение

Это даст вам ключ и имя столбца, если есть первичный ключ, иначе ничего.

SELECT sysobjects.name, syscolumns.name
FROM
  sysobjects INNER JOIN 
  syscolumns ON syscolumns.id = sysobjects.id INNER JOIN
  syskeys ON syskeys.id = sysobjects.id
WHERE 
  sysobjects.type = 'U' AND syskeys.type = 1
Другие вопросы по тегам