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