29

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」付近の構文が正しくありません。

4

3 に答える 3

39

この構文が必要だと思います:

ALTER TABLE tb_TableName  
add constraint cnt_Record_Status Default '' for Record_Status

nullあなたのコメントのいくつかに基づいて、列の変更がnot null失敗する原因となっている値がテーブルに既にある可能性があると推測します。その場合は、UPDATE最初に実行する必要があります。スクリプトは次のようになります。

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 を参照してください

于 2012-11-08T17:35:08.150 に答える
6

これを試してみてください。

ALTER TABLE tb_TableName
ALTER COLUMN Record_Status VARCHAR(20) NOT NULL

ALTER TABLE tb_TableName
ADD CONSTRAINT DEF_Name DEFAULT '' FOR Record_Status
于 2012-11-08T17:48:49.713 に答える
0

列にデフォルト値を設定するには、これを試してください:

ALTER TABLE tb_TableName
ALTER COLUMN Record_Status SET DEFAULT 'default value'
于 2014-03-07T09:26:19.033 に答える