INSERT语句与CHECK约束chk_Sex冲突问题求助
解决CHECK约束冲突及插入数据问题
冲突原因
你的chk_Sex约束明确限定了Sex列仅允许以下值:'M(Male)'、'F(Female)'、'NM(Neutered Male)'、'SF(Spayed Female)',但你插入语句中传入的Sex值是'NM',与约束允许的任何值都不匹配,因此触发了CHECK约束冲突。
解决方案
1. 修正插入语句的Sex值
将插入语句中的'NM'替换为约束允许的完整值'NM(Neutered Male)'。
2. 处理Phone列长度问题(潜在错误)
表定义中Phone列是nvarchar(10),但你插入的'(509) 555-1212'字符长度远超10,执行时会触发截断或报错。可以二选一:
- 调整插入的Phone值为纯数字格式(如
'5095551212'),适配现有列长度; - 修改表结构,扩展Phone列的长度:
ALTER TABLE DogLicense ALTER COLUMN Phone nvarchar(15);
修正后的插入语句示例
如果选择纯数字Phone值:
insert DogLicense values('06/21/2023','NM(Neutered Male)','Rosco','St.Bernard','Freeman','Mark','123 Meadow Ln.','99207','5095551212')
如果先修改了Phone列长度:
insert DogLicense values('06/21/2023','NM(Neutered Male)','Rosco','St.Bernard','Freeman','Mark','123 Meadow Ln.','99207','(509) 555-1212')
内容的提问来源于stack exchange,提问作者nightowl898
相关产品推荐
相关产品推荐

