SQL 2000/2005/2008 - найти уникальное имя ограничения для столбца - PullRequest
3 голосов
/ 28 сентября 2010

У меня есть таблица со столбцом, который нуждается в обновлении типа данных.Однако выполнение любого сценария изменения вызывает ошибки из-за неназванного уникального ограничения.

Мне нужно удалить это ограничение, но, к сожалению, я не знаю его имени.У меня есть сценарий, который в настоящее время перечисляет все уникальные ограничения таблицы, но мне нужно выяснить, как сделать этот шаг дальше и связать имена ограничений со столбцами.

Select *
From sysobjects
Where sysobjects.xtype = 'UQ' AND sysobjects.parent_obj= OBJECT_ID(N'Users')

это возвращает

UQ__Users__45F365D3
UQ__Users__46E78AOC

Мне нужно знать, с какими столбцами связаны тезисы, чтобы удалить нужный.Мне нужно поддерживать SQL 2000, 2005 и 2008.

Буду признателен за любые предложения.

Спасибо, Бен

1 Ответ

9 голосов
/ 28 сентября 2010

Вы должны иметь возможность использовать INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, чтобы установить это.

SELECT 
   CONSTRAINT_NAME 
FROM 
   INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 
WHERE 
   TABLE_NAME = 'TableName' 
   AND COLUMN_NAME = 'ColumnName'

Не уверен, что представление полностью поддерживается в SQL 2000, хотя.

...