You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSSQL修改列排序规则时如何在ALTER语句中正确添加默认约束

错误原因

你遇到的报错是因为SQL Server 中 ALTER TABLE ... ALTER COLUMN 语法本身不支持直接在子句末尾添加 DEFAULT 定义,默认值属于独立的表级约束对象,不能和修改列数据类型、排序规则、非空属性的逻辑写在同一条 ALTER COLUMN 语句中。

正确实现步骤

你需要拆成两条SQL语句依次执行:

  1. 先修改列的排序规则、非空属性
ALTER TABLE [TABLE] ALTER COLUMN [COLUMN] nchar(1) COLLATE Latin1_General_CI_AS NOT NULL;
  1. 再单独为列添加默认约束,建议明确指定约束名方便后续维护
ALTER TABLE [TABLE] ADD CONSTRAINT DF_[TABLE]_[COLUMN] DEFAULT 'y' FOR [COLUMN];

额外注意事项

  • 如果对应列已经存在默认约束,需要先删除原有约束再添加新约束,否则会触发重复约束报错,删除语法参考:
ALTER TABLE [TABLE] DROP CONSTRAINT [原有默认约束名];
  • 批量生成脚本时可以查询sys.default_constraints系统视图自动获取已有约束名,不用手动逐个查询修改。

内容的提问来源于stack exchange,提问作者user3748950

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:06:02