Ответ 1
Это должно работать:
ALTER TABLE t_tableName
ADD newColumn VARCHAR(50)
CONSTRAINT YourContraintName DEFAULT '' NOT NULL
В SQL Server у меня есть новый столбец таблицы:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Это не удается, потому что я указываю NOT NULL без указания ограничения по умолчанию. В таблице не должно быть ограничения по умолчанию.
Чтобы обойти это, я мог бы создать таблицу с ограничением по умолчанию, а затем удалить ее.
Однако, похоже, нет никакого способа указать, что ограничение по умолчанию должно быть названо как часть этого утверждения, поэтому мой единственный способ избавиться от него - иметь хранимую процедуру, которая просматривается в Таблица sys.default_constraints.
Это немного беспорядочно/многословно для операции, которая, вероятно, произойдет много. У кого-нибудь есть лучшие решения для этого?
Это должно работать:
ALTER TABLE t_tableName
ADD newColumn VARCHAR(50)
CONSTRAINT YourContraintName DEFAULT '' NOT NULL
ALTER TABLE t_tableName
ADD newColumn int NOT NULL
CONSTRAINT DF_defaultvalue DEFAULT (1)
Я мог бы создать столбец без NOT NULL, запустить обновление существующей даты, а затем изменить столбец, чтобы иметь NOT NULL. Я обеспокоен последствиями производительности, например, если они были в многомиллионной таблице строк, поэтому это кажется менее идеальным.