Должен ли я использовать information_schema.referential_constraints или sys.foreign_keys для проверки существования ключа? - PullRequest
3 голосов
/ 23 мая 2011

Я проверял существование внешних ключей перед удалением следующим образом:

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
        WHERE CONSTRAINT_NAME ='FK_Table1_Table2')
    ALTER TABLE dbo.Table1
        DROP CONSTRAINT FK_Table1_Table2

Затем мне пришло в голову, что есть таблица sys.foreign_keys, которая также содержит эту информацию, и теперь я 'Я не уверен, что лучше.

Я предполагаю, что если я знаю, что я только буду удалять FK, тогда я должен использовать sys.foreign_keys, но если я не знаю, какой тип ограничения я отбрасываюЯ должен использовать первый метод.Это правильно?Я упускаю какие-либо важные различия?

1 Ответ

4 голосов
/ 23 мая 2011

Если вы используете только сервер MS SQL, я предлагаю использовать представления из схемы sys, так как вы можете получить больше информации. Схема sys определяется MS SQL. Вы можете получить все виды информации, относящейся к MS SQL и не имеющей аналогов в других СУБД.

Если вас беспокоит переносимость, если вы хотите соответствовать другим базам данных, используйте INFORMATION_SCHEMA, так как это стандарт ISO для нескольких баз данных. Какая бы база данных не претендовала на поддержку этого стандарта, она должна возвращать данные одинаково. Следовательно, этот подход имеет ограничение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...