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 表中的数据没有链接而变得孤立了。

FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改将无法实现,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束中的值相对应,则该操作将失败。若要成功更改或删除 FOREIGN KEY 约束的行,必须先在外键表中删除或更改外键数据,这将把外键链接到不同的主键数据上去。

转载于:https://www.cnblogs.com/anzhi/p/7568394.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值