MSSQL修改列排序规则时如何在ALTER语句中正确添加默认约束
错误原因
你遇到的报错是因为SQL Server 中 ALTER TABLE ... ALTER COLUMN 语法本身不支持直接在子句末尾添加 DEFAULT 定义,默认值属于独立的表级约束对象,不能和修改列数据类型、排序规则、非空属性的逻辑写在同一条 ALTER COLUMN 语句中。
正确实现步骤
你需要拆成两条SQL语句依次执行:
- 先修改列的排序规则、非空属性
ALTER TABLE [TABLE] ALTER COLUMN [COLUMN] nchar(1) COLLATE Latin1_General_CI_AS NOT NULL;
- 再单独为列添加默认约束,建议明确指定约束名方便后续维护
ALTER TABLE [TABLE] ADD CONSTRAINT DF_[TABLE]_[COLUMN] DEFAULT 'y' FOR [COLUMN];
额外注意事项
- 如果对应列已经存在默认约束,需要先删除原有约束再添加新约束,否则会触发重复约束报错,删除语法参考:
ALTER TABLE [TABLE] DROP CONSTRAINT [原有默认约束名];
- 批量生成脚本时可以查询
sys.default_constraints系统视图自动获取已有约束名,不用手动逐个查询修改。
内容的提问来源于stack exchange,提问作者user3748950
相关产品推荐
相关产品推荐

