如何将NULL列改为NOT NULL?执行ALTER语句遇Msg 515错误
解决将Sale表CustomerID列改为NOT NULL的报错问题
错误Msg 515的原因很明确:Sale表中已经存在CustomerID为NULL的记录,SQL Server在执行ALTER COLUMN设置NOT NULL约束时会校验所有现有数据,不允许存在违反约束的行。按以下步骤操作即可解决:
- 定位所有存在NULL值的行
SELECT * FROM Sale WHERE CustomerID IS NULL;
处理NULL值(二选一)
- 若这些行是无效数据,直接删除:
DELETE FROM Sale WHERE CustomerID IS NULL; - 若需保留行,给NULL值设置符合列类型的有效值(示例用
'UNKNOWN'作为占位符,可根据业务需求调整):
注意:设置的值必须满足UPDATE Sale SET CustomerID = 'UNKNOWN' WHERE CustomerID IS NULL;nvarchar(10)的长度限制,不能超过10个字符。
- 若这些行是无效数据,直接删除:
执行原ALTER语句修改列约束
ALTER TABLE Sale ALTER COLUMN CustomerID nvarchar(10) NOT NULL;
可选:添加默认约束预防后续NULL值
如果希望后续插入数据时自动避免NULL,可以给列添加默认约束:
ALTER TABLE Sale ADD CONSTRAINT DF_Sale_CustomerID DEFAULT 'UNKNOWN' FOR CustomerID;
内容的提问来源于stack exchange,提问作者Bùi Thị Thái
相关产品推荐
相关产品推荐

