暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBASE:GBase 8s SQL 指南:语法_2 CREATE TABLE 语句(20)

GBASE数据库 2022-02-24
475

禁用的引用约束 以下 CREATE TABLE 引用创建了 xeno_counts 表,并在它的 xeno_num 列和第一个示例中 accounts 表的 acc_num 列之间定义了引用约束。此单列约束格式语法还包含了约束定义,指定 DISABLED 作为它的约束方式,且声明 xeno_constr 作为外键约束的名称。此处 xeno_accounts 是 引用表,accounts 是被引用表。


在 DISABLED 方式,当 DML 操作在 xeno_counts 表中产生违例行时,不会执行 xeno_constr 约 束。然而,要实现参照完整性,可以使 SET Database Object Mode 语句的 SET CONSTRAINTS 选 项将约束的方式更改为 ENABLED。或者,START VIOLATION 语句将违例表与 xeno_counts 表关 联后, SET CONSTRAINTS 可将 xeno_constr 约束重设为 FILTERING 方式。

使用 ON DELETE CASCADE 选项 

使用 ON DELETE CASCADE 选项来指定从父表中删除某行时,是否需要从子表中删除相应的 行。如果您不指定级联删除,则数据库服务器的缺省行为将阻止您删除表中的数据(如果有其它表 引用它)。 

如果指定此选项,则稍后当您删除父表中的行时,数据库服务器还删除任何与子表中的行(外键) 相关的行。

级联删除功能最主要的好处是,需要执行删除操作时它可以减少 SQL 语句的数量。 例如,all_candy 表中包含的 candy_num 列是主键。hard_candy 表将 candy_num 列作为外键引 用。

以下的 CREATE TABLE 语句将创建 hard_candy 表,其外键上具有级联删除选项:


由于为子表指定了 ON DELETE CASCADE ,因此当从 all_candy 表中删除某行时,hard_candy 表中的相应行也将被删除。

有关从具有级联删除的表中删除行时的语法限制和锁定影响的信息,请 参阅级联删除表时的注意事项。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论