注册 登录
编程论坛 SQL Server论坛

[分享][经验]我的一点小小经验,不要见笑,呵呵

ninggang 发布于 2006-12-25 22:18, 839 次点击

这个问题书中也说了不少,但在编写图书管理系统的时候遇上了,弄了半天,原来这么回事,但愿对大家有帮助,呵呵
当两张数据库中的表有内容时,这时我们向其中一张表添加外键(引用另外一张表的主键),却报错说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)

4 回复
#2
angeloc2006-12-26 08:53
哦,下次注意好了
#3
chenxkfox2006-12-26 11:41

受教

#4
lengxie2006-12-26 16:58
学习了
#5
zjh_00012006-12-27 11:57

受教了,

1