DB2版本8 z / OS是否支持可以为空的外键?
例如,人员表上的一个外键到主管表(某些人没有主管)。
答案 0 :(得分:2)
根据文档,应该可以在DB2 for z / OS v8中使用可以为空的外键。有关这些详细信息,请参阅插入,更新和删除规则:
插入规则 外键的非空插入值必须与父表的父键的某个值匹配。如果值的任何组件为null,则复合外键的值为null。
更新规则 外键的非空更新值必须与父表的父键的某个值匹配。如果值的任何组件为null,则复合外键的值将被视为null。
删除规则 控制删除父表行时发生的情况。定义引用约束时所做的操作选择是RESTRICT,NO ACTION,CASCADE或SET NULL。仅当外键的某些列允许空值时,才能指定SET NULL。
DB2 v8外键子句引用(还指出允许空值):http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0004981.htm
答案 1 :(得分:1)
尝试它比研究文档更快,这些文档将在2013年1月之后从IBM网站上删除。
以下是CREATE TABLE声明的部分解释。
引用约束的外键由标识的列组成。 |每个列名必须是一个非限定名称,用于标识除LOB,ROWID或安全标签列之外的表的列,并且不能多次标识同一列。已标识列的数量不得超过64,并且其长度属性的总和不得超过255减去允许空值的列数。如果FOREIGN KEY和父表与先前定义的引用约束的FOREIGN KEY和父表相同,则引用约束是重复的。重复引用约束的规范将被忽略,并带有警告。
所以,是的,外键可以包含一个或多个可为空的列。