请将下列SQL语句的空缺部分补充完整。 (1)假设已经创建好用户关系,现在想增加一个属性“个性签名”,类型为 VARCHAR(60),请给出相关的SQL语句。 (a); (2)假设已经创建好用户关系,下面是创建栏目关系的SQL语句

admin2009-01-10  34

问题 请将下列SQL语句的空缺部分补充完整。
   (1)假设已经创建好用户关系,现在想增加一个属性“个性签名”,类型为 VARCHAR(60),请给出相关的SQL语句。
       (a);
   (2)假设已经创建好用户关系,下面是创建栏目关系的SQL语句,请将空缺部分补充完整。
   CREATE TABLE 栏目(
        栏目编号 VARCHAR(8) PRIMARY KEY,
        父栏目编号VARCHAR (8),
        名称VARCHAR(40),
        版主 VARCHAR(8) NOT NULL,
        描述 VARCHAR(100),
          (b),
          (c),
假设所有关系模式已创建,回复主题关系模式的“主题编号”是外键,参照主题关系模式的“主题编号”。现在要删除编号为“T005”的主题及其相关的回复主题,下面是对应的删除语句,这些语句组成一个事务。
   DELETE 主题 WHERE主题编号=‘T005’;
   DELETE 回复主题 WHERE主题编号=‘T005’;
   (1)请问这些删除语句能否完成功能?若不能,请说明为什么?  (100字以内)
        (i)     
   (2)假设现在希望仅通过“DELETE主题WHERE主题编号=‘T005’;”这一条语句就能完成此删除功能,应如何实现?  (100字以内)
       (j)   

选项

答案(1)(i)不能完成此功能。删除了主题编号为“T005”的主题后,可能会存在该主题的回复主题,违反参照完整性约束。 (2)(j)在创建回复主题关系时指定级联删除,定义主题编号属性的外键约束后加上ON DELETE CASCADE。 或者是在主题关系上定义触发器,当删除主题时,删除其对应的回复主题。

解析 本题考查的是参照完整性约束,第(1)题给的两个DELETE语句,删除了主题编号为“T005”的主题后,可能会存在该主题的回复主题,违反参照完整性约束。因此SQL语句不能完成想要完成的功能,若这两个语句先后顺序调换过来,则可以完成功能。第 (2)题要求仅用一个DELETE语句就完成该删除要求,数据库提供了一些机制完成这个要求,一个是在定义回复主题关系时指定级联删除,定义主题编号属性的外键约束后加上ON DELETE CASCADE;或者通过触发器机制,在主题关系上定义触发器,当删除主题时,删除其对应的回复主题,通过CREATE TRIGGER...语句完成。
转载请注明原文地址:https://kaotiyun.com/show/iyUZ777K
0

相关试题推荐
最新回复(0)