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