Изменить колонку в SQL Server
Что такое правильный синтаксис для оператора ALTER
для добавления значения по умолчанию в существующий столбец?
Я могу добавить новый столбец без ошибок:
ALTER TABLE tb_TableName ADD Record_Status varchar(20)
Но если я попытаюсь изменить существующий столбец, чтобы применить значение по умолчанию, используя следующий оператор:
ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL DEFAULT ''
или
ALTER TABLE tb_TableName
ALTER Record_Status VARCHAR(20) NOT NULL DEFAULT ''
Я получаю сообщение об ошибке:
Неправильный синтаксис около 'Record_Status'.
Ответы
Ответ 1
Я думаю, вам нужен этот синтаксис:
ALTER TABLE tb_TableName
add constraint cnt_Record_Status Default '' for Record_Status
Исходя из некоторых ваших комментариев, я собираюсь предположить, что у вас могут быть значения null
в вашей таблице, что приводит к сбою изменения столбца not null
. Если это так, вы должны сначала запустить UPDATE
. Ваш script будет:
update tb_TableName
set Record_Status = ''
where Record_Status is null
ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL
ALTER TABLE tb_TableName
ADD CONSTRAINT DEF_Name DEFAULT '' FOR Record_Status
Смотрите SQL Fiddle с демонстрацией
Ответ 2
Попробуйте это.
ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL
ALTER TABLE tb_TableName
ADD CONSTRAINT DEF_Name DEFAULT '' FOR Record_Status
Ответ 3
Чтобы установить значение по умолчанию для столбца, попробуйте следующее:
ALTER TABLE tb_TableName
ALTER COLUMN Record_Status SET DEFAULT 'default value'