关于级联删除与更新

注意看最后框出来的话,我加了个外键:

在数据库里操作删除时,(clerk为主表,contract为次表,contract的clerk_id为clerk的外键),删除主表的一条记录,外表的对应记录不见了,然后我想到自己在java后台自己写了级联删除的语句觉得是多此一举了,java语句删除以后,数据库一条外键一加,页面上做删除同样做到了级联删除。

然后我以为级联更新也同样可以在数据库navicat客户端完成,于是注释掉java级联更新相关的代码,但是我天真了,并没有成功,百度一看,就是上面的截图,只会更新id和对应的外键,相关记录并不会做更新(已经试过,确实是,更新id暂时没发现什么价值)。

但是,我已开始是写语句加外键的,为什么提示错误呢?

alter table contract add FOREIGN KEY(clerk_id)REFERENCES clerk(id) on delete cascade;

当然是语句写的不对啊,正确的:注意没有标点符号

alter table contract add constraint contract_key foreign key(clerk_id) references clerk(id) on delete CASCADE on update CASCADE;

语法:alter table 表名 add constraint 键名 foreign key (外键字段名) references 主表名(主表主键名)

如果后期考虑到表的安全性问题,要求不允许设置外键什么的话,级联删除还是要写java后台语句的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值