SQL 2000/2005/2008 — найти уникальное имя ограничения для столбца

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

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

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.

Мы ценим любые предложения.

Спасибо Бен


person Ben Cawley    schedule 28.09.2010    source источник
comment
Если вы публикуете код или XML, пожалуйста выделите эти строки в текстовом редакторе и нажмите кнопку кода (101 010) на панели инструментов редактора, чтобы правильно отформатировать и выделить синтаксис!   -  person marc_s    schedule 28.09.2010


Ответы (1)


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

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

Однако не уверен, полностью ли это представление поддерживается в SQL 2000.

person JamWheel    schedule 28.09.2010
comment
Спасибо JamWheel. Кажется, это работает нормально и, как и ожидалось, на SQL 2000, 2005 и 2008! - person Ben Cawley; 28.09.2010
comment
Если вы публикуете код или XML, пожалуйста выделите эти строки в текстовом редакторе и нажмите кнопку кода (101 010) на панели инструментов редактора, чтобы правильно отформатировать и выделить синтаксис! - person marc_s; 28.09.2010
comment
Мне не удалось найти ограничение по умолчанию; он нашел только ограничение FK. stackoverflow.com/a/6883039/109736 работал у меня. - person JasonCoder; 20.05.2013