CREATE TABLE accounts (
acc_num INTEGER,
acc_type INTEGER,
acc_descr CHAR(20),
PRIMARY KEY (acc_num, acc_type));
CREATE TABLE sub_accounts (
sub_acc INTEGER PRIMARY KEY,
ref_num INTEGER NOT NULL,
ref_type INTEGER NOT NULL,
sub_descr CHAR(20),
FOREIGN KEY (ref_num, ref_type) REFERENCES accounts
(acc_num, acc_type));
在此示例中,sub_accounts 表的外键 ref_num 和 ref_type,引用 accounts 表中的组合关键字 acc_num 和 acc_type。如果在插入和更新期间,当您试图向 sub_accounts 表中插入一行,而其中 ref_num 和 ref_type 的值没有精确地与 accounts 表中已有行的 acc_num 和 acc_type 的值对应,则数据库服务器将返回一个错误。
在引用和被引用的列之间,引用约束必须具有一对一的关系。换句话说,如果组合关键字是一组列的结合(组合关键字),则外键也必须是与组合关键字对应的一组列的集合。
FOREIGN KEY (ref_num, ref_type) REFERENCES accounts