В Microsoft SQL Server я знаю запрос, чтобы проверить, существует ли ограничение по умолчанию для столбца и удалить ограничение по умолчанию:
IF EXISTS(SELECT * FROM sysconstraints
WHERE id=OBJECT_ID('SomeTable')
AND COL_NAME(id,colid)='ColName'
AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Но из-за опечатки в предыдущих версиях базы данных имя ограничения могло быть DF_SomeTable_ColName
или DF_SmoeTable_ColName
.
Как я могу удалить ограничение по умолчанию без каких-либо ошибок SQL? Имена ограничений по умолчанию не отображаются в таблице INFORMATION_SCHEMA, что несколько усложняет ситуацию.
Итак, что-то типа «удалить ограничение по умолчанию в этой таблице / столбце» или «удалить DF_SmoeTable_ColName
», но не выдает никаких ошибок, если он не может его найти.
sql
sql-server
tsql
Robo
источник
источник
Ответы:
Развернув код Mitch Wheat, следующий скрипт сгенерирует команду для удаления ограничения и его динамического выполнения.
источник
Блог Роба Фарли может помочь:
Что-то вроде:
источник
Я обнаружил, что это работает и не использует никаких соединений:
Просто убедитесь, что columnName не заключено в квадратные скобки, потому что запрос ищет точное совпадение и ничего не вернет, если он равен [columnName].
источник
IF @ObjectName IS NOT NULL
перед командой EXEC[default_object_id])
это 0 . Я получаю значение NULL .Чтобы удалить ограничение для нескольких столбцов:
источник
Расширенное решение (учитывает схему таблицы):
источник
Отбросьте все стандартные ограничения в базе данных - безопасно для nvarchar (max) порог.
источник
Запустите эту команду, чтобы просмотреть все ограничения:
Это будет выглядеть примерно так:
DF__Mytable__Column__[ABC123]
. Тогда вы можете просто снять ограничение.источник
exec sp_helpconstraint 'Roles2016.UsersCRM'
Я надеюсь, что это может быть полезно для тех, у кого есть подобные проблемы. В
ObjectExplorer
окне выберите вашу базу данных => Таблицы, => ваша таблица => Ограничения. Если клиент определен во время создания столбца, вы можете увидеть имя ограничения по умолчанию, включая имя столбца. затем используйте:(имя ограничения - только пример)
источник
Следующее решение удалит конкретное ограничение по умолчанию для столбца из таблицы.
источник
У меня было несколько столбцов, в которых было создано несколько ограничений по умолчанию, поэтому я создаю следующую хранимую процедуру:
источник
Полезно для некоторых столбцов, которые были созданы несколько раз
default constraints or check constraints
:Модифицированный скрипт https://stackoverflow.com/a/16359095/206730
источник
Всегда генерируйте скрипт и проверяйте его перед запуском. Ниже сценария
источник
источник
Взглянуть.
источник