在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
  • asp之家 网络编程 m.aspxhome.com