oracle外键不必定是他表主键

FOREIGN KEY 约束并不单单能够与另外一表的 PRIMARY KEY 约束相连接,它还能够定义为引用另外一表的 UNIQUE 约束。FOREIGN KEY 约束能够包含空值,可是,若是任何组合 FOREIGN KEY 约束的列包含空值,则将跳过组成 FOREIGN KEY 约束的全部值的验证。若要确保验证了组合 FOREIGN KEY 约束的全部值,请将全部参与列指定为 NOT NULL。
注意

FOREIGN KEY 约束能够引用同一数据库的表中的列或同一表中的列。这些称为“自引用”表。例如,请考虑包含三列的一个雇员表:employee_numberemployee_name 和 manager_employee_number。因为经理自己也是雇员,因此从manager_employee_number 列到 employee_number 列存在外键关系。数据库

尽管 FOREIGN KEY 约束的主要目的是控制能够存储在外键表中的数据,但它还能够控制对主键表中数据的更改。例如,若是在 Sales.SalesPerson表中删除一个销售人员行,而这个销售人员的 ID 由 Sales.SalesOrderHeader 表中的销售订单使用,则这两个表之间关联的完整性将被破坏;SalesOrderHeader 表中删除的销售人员的销售订单由于与 SalesPerson 表中的数据没有连接而变得孤立了。spa

FOREIGN KEY 约束防止这种状况的发生。若是主键表中数据的更改使之与外键表中数据的连接失效,则这种更改将没法实现,从而确保了引用完整性。若是试图删除主键表中的行或更改主键值,而该主键值与另外一个表的 FOREIGN KEY 约束中的值相对应,则该操做将失败。若要成功更改或删除 FOREIGN KEY 约束的行,必须先在外键表中删除或更改外键数据,这将把外键连接到不一样的主键数据上去。
相关文章
相关标签/搜索