鉴于以下陈述:
null
S1: A foreign key declaration can always be replaced by an equivalent check assertion in SQL. S2: Given the table R(a,b,c) where a and b together form the primary key, the following is a valid table definition. CREATE TABLE S ( a INTEGER, d INTEGER, e INTEGER, PRIMARY KEY (d), FOREIGN KEY (a) references R)
以下哪项陈述是正确的? (A) S1为真,S2为假。 (B) S1和S2都是真的。 (C) S1为假,S2为真。 (D) S1和S2都是假的。 答复: (D) 说明: 检查断言不足以替换 外键 .外键声明可能具有级联删除功能,仅通过检查插入是不可能的。
使用检查条件,我们可以在向子表添加元素时获得与外键相同的效果。但是,当我们从父表中删除一个元素时,引用完整性约束不再有效。因此,检查约束不能替换外键。
所以,我们不能用一张支票来代替它。
S2: Given the table R(a,b,c) where a and b together form the primary key, the following is a valid table definition. CREATE TABLE S ( a INTEGER, d INTEGER, e INTEGER, PRIMARY KEY (d), FOREIGN KEY (a) references R)
错: 表中的一个外键应唯一标识另一个外键。在上面的表定义中,表S有一个外键,该外键指向R的字段“a”。表S中的字段“a”不能唯一标识表R中的一行。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END