В SQL Server у меня есть новый столбец в таблице:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Это терпит неудачу, потому что я указываю NOT NULL без указания ограничения по умолчанию. Таблица не должна иметь ограничения по умолчанию.
Чтобы обойти это, я мог бы создать таблицу с ограничением по умолчанию, а затем удалить ее.
Однако, похоже, нет никакого способа указать, что ограничение по умолчанию должно быть названо как часть этого оператора, поэтому мой единственный способ избавиться от него - это иметь хранимую процедуру, которая ищет его в sys.default_constraints. стол.
Это немного грязно / многословно для операции, которая может случиться много. У кого-нибудь есть лучшие решения для этого?
NOT NULL
смежный тип данных? Это может быть синтаксически допустимым, чтобы поместить его после ограничения, но это кажется запутанным, чтобы поместить его там.источник
Я хотел бы добавить некоторые детали, поскольку существующие ответы довольно тонкие :
Самый важный совет: никогда не создавайте ограничение без явного имени!
Самая большая проблема с безымянными ограничениями : при выполнении этого на разных клиентских компьютерах вы получите разные / случайные имена на каждом.
Любой будущий скрипт обновления будет настоящей головной болью ...
Общий совет:
DF_TableName_ColumnName
для ограничения по умолчаниюCK_TableName_ColumnName
для проверки ограниченияUQ_TableName_ColumnName
для уникального ограниченияPK_TableName
для ограничения первичного ключаОбщий синтаксис
Попробуйте это здесь
Вы можете добавить больше ограничений для каждого столбца, а также добавить дополнительные ограничения так же, как добавляете столбцы после запятой:
- вставить некоторые данные
источник
Попробуйте как ниже скрипт
источник