在SQL Server中处理空值时涉及的三个问题(2)
时间:2009-02-05 15:30:00
以下代码则创建子表,并在引用父表的列中插入一个空值。
CREATE TABLE Child
(pkey1 INT IDENTITYCONSTRAINT pkChild
PRIMARY KEY,Parentpkey1 INT NULLCONSTRAINT fkChildParent
FOREIGN KEYREFERENCES Parent(pkey1),col1 INT NULL)
GOINSERT Child (Parentpkey1, col1) VALUES (null,2)GO
但在以下代码中,要同时从父表和子表选择值。虽然父表不包含空值,但在子表引用了父表的那个列中,将允许一个空值。
然后丢弃所有表,清除这个演示所用的数据库对象。
SELECT * FROM ChildGOSELECT * FROM ParentGODROP TABLE Child, ParentGO
在可以为空的外键中检查数据的有效性
如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据。可在一个外键列中插入有效的值,但在另一个外键列中插入空值。然后,可添加一个数据表检查约束,在可为空的外键中检查数据的有效性。
任何多列外键都可能遇到同样的问题。所以,你需要添加一个检查约束来检测异常。最初,检查约束将检查构成外键的所有列中可能为空的值。检查约束还要检查这些列中不能为空的值。如两个检查都通过,问题就解决了。
以下示范脚本展示了这样的一个异常,以及如何用检查约束来纠正它。
标签:SQL,Serverv,处理空值时涉及的三个问题
0
投稿
猜你喜欢
sp_executesql 使用复杂的Unicode 表达式错误的解决方法
2012-01-29 17:58:52
一个滑动展示的小代码
2011-07-01 12:58:05
分享很实用的css圆角写法[百度有啊提取]
2009-01-06 13:05:00
ASP+JAVAScript:复杂表单的动态生成与验证
2007-10-06 21:51:00
JavaScript 各种动画渐变效果
2008-09-02 10:38:00
如何随机显示图片计数器?
2010-05-16 15:21:00
asp textarea 多行数组分割处理方法
2011-03-03 10:55:00
Oracle与SQL Server在企业应用的比较
2010-07-20 13:34:00
Ajax缓存和编码问题的最终解决方案
2010-03-30 13:42:00
jquery 使用点滴函数代码
2011-05-21 16:12:00
黄相如:如何做好用户体验
2008-06-04 17:34:00
平面设计人员必读
2008-07-16 11:58:00
asp 去掉html中的table正则代码函数
2011-04-06 10:48:00
WEB2.0网页制作标准教程(2)什么是名字空间
2007-11-13 13:04:00
视觉注意力—解剖设计的根源
2010-01-22 15:12:00
ASP中使用Form和QueryString集合
2007-09-14 10:43:00
DHTML实例解析:用HTC统一定制表单样式
2007-11-04 18:48:00
推荐9款很棒的网页绘制图表JavaScript框架脚本
2009-04-15 12:13:00
如何获得上一个月份是几月?
2009-11-23 20:38:00
IE7 与 IE6 的模式窗口尺寸差异
2008-03-06 13:49:00