外部关键字也是表中的一个或多个字段,外部关键字的值与相关表的主关键字相匹配。例如,“供应商"表中的主关键字“供应商ID”字段就与“产品”表中的外部关键字“供应商ID"字段相连。
当一张二维表(如T1)的主关键字被包含到另外一张二维表(如T2)中时,它就称为T2的外部关键字(Foreign Key).
举个例子:
SQL> create table aaa(a number);
表已创建。
SQL> create table bbb (a number);
表已创建。
SQL> ALTER TABLE AAA ADD (CONSTRAINT AAA_PK PRIMARY KEY(a) DEFERRABLE) ;
表已更改。
SQL> ALTER TABLE BBB
2 ADD (CONSTRAINT BBB_FK FOREIGN KEY(a)
3 REFERENCES AAA(a)
4 ON DELETE CASCADE DEFERRABLE) ;
表已更改。
SQL> CREATE OR REPLACE TRIGGER ID_TRG AFTER UPDATE ON AAA FOR EACH ROW
2 BEGIN
3 UPDATE BBB SET a=:NEW.a WHERE a=:OLD.a;
4 END;
5 /
触发器已创建
SQL> insert into aaa values(1);
已创建 1 行。
SQL> insert into bbb values(1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> update aaa set a = 2;
已更新 1 行。
SQL> commit;
提交完成。
SQL> select * from bbb;
A
----------
2
SQL> delete from aaa;
已删除 1 行。
SQL> commit;
提交完成。
SQL> select * from bbb;
未选定行