REFERENCES 子句允许您在一个或多个列上放置外键引用。被引用的列和引用列可以在同一表中,或在同一数据库的不同表中。
如果被引用表与引用表不同,则缺省的 column 是主键列。如果被引用表与引用表相同,则没有缺省主键列。
可选的 ON DELETE CASCADE 关键字可在 REFERENCES 子句中被指定为最后的关键字,或者它们可跟随在声明的约束定义中约束名称之后。有关在 DELETE 操作中的这些关键字的作用的信息,请参阅使用 ON DELETE CASCADE 选项 。
对引用约束的限制
必须拥有 REFERENCES 权限才能创建引用约束。
以下限制应用到在 REFERENCES 子句中指定(被引用列)的 column:
⚫ 被引用表和引用表必须在同一数据库中。
⚫ 被引用表(或列组)必须拥有唯一约束或主键约束。
⚫ 被引用表和引用表是相同的数据类型。
唯一的例外在于,如果被引用列是顺序数据类型,则引用列必须为整数数据类型:
o 对 BIGSERIAL 被引用列,使用 BIGINT 引用列。
o 对 SERIAL 被引用列,使用 INT 引用列。
o 对 SERIAL8 被引用列,使用 INT8 引用列。
⚫ 不能在 BYTE 或 TEXT 列上放置引用约束。
⚫ 不能在 RAW 表的任何列上放置约束。
⚫ 约束使用创建时生效的排序规则。
⚫ 列级 REFERENCES 子句只能包含单独一个列名称。
⚫ 表级的 REFERENCES 子句中最大列数为 16 。 • 表级的 REFERENCES 子句列的总长度不能超过 390 字节。