关系数据库的三种外键

此处以Oracle为例
1、普通外键约束

ALTER TABLE USER_ROLE ADD CONSTRAINT FK_BS_USER_ROLE_USERID FOREIGN KEY(USERID) REFERENCES USER(USERID);
ALTER TABLE USER_ROLE ADD CONSTRAINT FK_BS_USER_ROLE_ROLEID FOREIGN KEY(ROLEID) REFERENCES ROLE(ID);

2、级联外键约束

ALTER TABLE USER_ROLE ADD CONSTRAINT FK_BS_USER_ROLE_USERID FOREIGN KEY(USERID) REFERENCES USER(USERID) ON DELETE CASCADE;
ALTER TABLE USER_ROLE ADD CONSTRAINT FK_BS_USER_ROLE_ROLEID FOREIGN KEY(ROLEID) REFERENCES ROLE(ID) ON DELETE CASCADE;

3、置空外键约束:

ALTER TABLE USER_ROLE ADD CONSTRAINT FK_BS_USER_ROLE_USERID FOREIGN KEY(USERID) REFERENCES USER(USERID) ON DELETE SET NULL;
ALTER TABLE USER_ROLE ADD CONSTRAINT FK_BS_USER_ROLE_ROLEID FOREIGN KEY(ROLEID) REFERENCES ROLE(ID) ON DELETE SET NULL;

上面分别是三种外键的创建语句
现在举个例子
现在有三张表USER,ROLE,USER_ROLE
分别对应用户表,角色表,用户角色关系表
普通外键:当用户角色表中存在用户表中的用户或者角色表中的角色时,无法删除用户表中的用户或角色表中的角色
级联外键:当用户角色表中存在用户表中的用户或者角色表中的角色时,删除用户表中的用户或角色表中的角色会同时删除以此用户或角色作为外键的用户角色关系
置空外键:当用户角色表中存在用户表中的用户或者角色表中的角色时,删除用户表中的用户或角色表中的角色会同时将用户角色关系中的值置空(此处可修改为其他默认值)
外话:之前给权限系统建表踩得坑,推荐使用级联外键,会减少很多代码开发量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值