文章
· 七月 30, 2021 阅读大约需 3 分钟

外键关键字Internal,NoCheck,OnDelete,OnUpdate

第四十一章 外键关键字 - Internal

指定此外键定义是否为内部定义(不显示在类文档中)。

用法

要将此外键定义标记为内部,请使用以下语法:

ForeignKey keyname(key_props) References pkg.class(ref_index) [ Internal ];

否则,省略此关键字或将单词Not放在关键字的前面。

详解

内部类成员不会显示在类文档中。如果想让用户看到一个类,但不看到它的所有成员,这个关键字很有用。

默认

如果省略此关键字,此外键定义将显示在类文档中。

第四十二章 外键关键字 - NoCheck

指定是否应该检查这个外键约束。

用法

要防止检查该外键定义的约束,请使用以下语法:

ForeignKey keyname(key_props) References pkg.class(ref_index) [ NoCheck ];

否则,省略此关键字或将单词Not放在关键字的前面。

详解

NoCheck关键字禁止检查外键约束(换句话说,它指定外键约束永远不被检查)。

默认

如果省略这个关键字,会检查外键约束。

第四十三章 外键关键字 - OnDelete

指定当外部表中删除的记录被当前表中的记录引用时,此外部键应在当前表中引起的操作。

用法

要指定在外部表中删除引用的记录时在当前表中发生的情况,请使用以下语法:

ForeignKey keyname(key_props) References pkg.class(ref_index) [ OnDelete = ondelete ];

其中ondelete是下列之一:

  • noaction 无操作(默认)—当试图删除外部表中的引用记录时,尝试会失败。
  • cascade级联—当外部表中的引用记录被删除时,该表中的引用记录也将被删除。
  • setdefault —当引用记录在外部表中被删除时,引用记录中对外部表的引用被设置为其默认值。
  • setnull — 当外部表中的被引用记录被删除时,引用记录中对外部表的引用被设置为null

默认

当删除外部表中的某一行时,将检查外部表上具有外键约束的所有引用表,以查看是否有任何行引用了正在删除的行。如果找到任何这样的引用,OnDelete操作将生效。

默认

默认值为noaction

第四十四章 外键关键字 - OnUpdate

指定当外键表中记录的键值被更新并且该记录被当前表中的记录引用时,该外键在当前表中应引起的操作。

用法

要指定当引用记录的键值在外部表中更新时在当前表中发生的情况,请使用以下语法:

ForeignKey keyname(key_props) References pkg.class(ref_index) [ OnUpdate = onupdate ];

其中onupdate是下列之一:

  • noaction(默认值)—当尝试更新外部表中引用记录的键值时,尝试会失败。
  • cascade 级联—当引用记录的键值在外部表中更新时,引用记录中对外部表的引用也会更新。
  • setdefault —当引用记录的键值在外部表中更新时,引用记录中对外部表的引用被设置为其默认值。
  • setnull —当引用记录的键值在外部表中更新时,引用记录中对外部表的引用被设置为null

详解

当更新外部表中行的键值时,将检查外部表上具有外键约束的所有引用表,以查看是否有任何行引用了正在更新的行。如果找到任何这样的引用,OnUpdate操作将生效。

默认

默认值为noaction

讨论 (0)1
登录或注册以继续