Подтвердить что ты не робот

Изменить колонку в 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'.

4b9b3361

Ответ 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'