Почему SQL Server продолжает создавать ограничение DF?

Я пытаюсь создать сценарии обновления и возврата в SQL. Сценарий обновления добавляет такой столбец:

IF NOT EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName' 
    AND object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE TableName
    ADD ColumnName bit NOT NULL DEFAULT(0) 

Сценарий отката удаляет столбец следующим образом:

IF EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName' 
    AND object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE TableName
    DROP COLUMN ColumnName

Однако сценарий отката выдает следующую ошибку:

Msg 5074, Level 16, State 1, Line 5
    The object 'DF__TableName__ColumnName__1BF3D5BD' is dependent on column 'ColumnName'.
Msg 4922, Level 16, State 9, Line 5
    ALTER TABLE DROP COLUMN ColumnName failed because one or more objects access this column.

Я знаю, как отбросить ограничение, но имя ограничения меняется каждый раз (суффикс меняется.) Мне либо нужно, чтобы SQL Server прекратил создание этого ограничения со случайным именем, ЛИБО мне нужно иметь возможность удалить ограничение в моем скрипте, используя символы подстановки, поскольку имя изменяется.

39
задан a_horse_with_no_name 9 November 2017 в 22:38
поделиться