一、问题
重新做数据库完整性设计作业中的“为电话号码创建合适的约束条件”时将原本写好的语句执行时报错:
Msg 547, Level 16, State 0, Line 1
ALTER TABLE 语句与 CHECK 约束"CK_PHONE"冲突。该冲突发生于数据库"teaching",表"dbo.student", column \'phone\'。
二、分析原因
(我上网查的)
正常情况下,我们创建好数据表,然后用该语法定义增加约束是没问题的。
但是经别人研究发现,当数据表中有数据时,增加约束会出现该问题。
因为该Student表中是有数据的,所以增加不了约束。
三、解决办法
方法一
sql语句方式:
把相关数据表的数据删除掉,再执行该语句。
如果删除表数据还是有问题,可以重建数据库,先建立好关系,再导入数据试试。
方法二
可视化向导方式:
把“在创建或重新启动时检查现有数据”改为否。
1、找到Student表,右击约束,点击“新建约束”
2、左上角自动有一个约束,然后点击图中位置的省略号图标
3、根据实际情况给它添加约束关系,直接在框中输入或黏贴,定义完关系后点击确定
4、把“在创建或重新启动时检查现有数据(Check Existing Data On Creation or Re-Enabling)”改为否!
5、关闭页面,保存即可