[分享][经验]我的一点小小经验,不要见笑,呵呵
这个问题书中也说了不少,但在编写图书管理系统的时候遇上了,弄了半天,原来这么回事,但愿对大家有帮助,呵呵
当两张数据库中的表有内容时,这时我们向其中一张表添加外键(引用另外一张表的主键),却报错说Alter语句与外键冲突,这是因为当添加外键时要检验数据的合法性,很明显这是因为数据的不合法,这时可以加上with nocheck
如:Alter table BS With nocheck Add constraint FK_BS_Students foreign key(SID) references Students(SID)
Alter table BS check constraint FK_BS_Students
又如:当我们创建了一张表Create Table mytab(col_a int)
插入一行数据insert into mytab(-1)
添加约束Alter table mytab Add constraint CK_mytab_col_a Check(col_a>0)
很明显这里的alter table语句不能执行,因为在真正加入约束之前,要检验数据的合法性,显然-1与check(col_a>0)矛盾
所以应该修改为这样:Alter table mytab with nocheck Add constraint CK_mytab_col_a Check(col_a>0)(注意这里是with nocheck而不是nocheck)
如果恢复检查功能:Alter table mytab check constraint CK_mytab_col_a(注意这里是check,而不是with check)