postgreSQL的外键级联删除

背景描述:

最近在做一个新的项目,其中的order模块,有一个order_records表和order_logs表,order_records表中的id是order_logs表的外键。

我们有一个功能是删除order_records表中的数据,并删除关联的order_logs表中的数据。

问题描述:

然而我们再测试环境测得是正常的,在生产上就不行啦。

问题分析:

代码都是一样的,为啥生产就是不行呢。

查找日志发现如下报错

Caused by: org.postgresql.util.PSQLException: ERROR: update or delete on table "ship_order_records" violates foreign key constraint "fkan0vr5n6v19406g89a5novrp7" on table "ship_order_logs"
  Detail: Key (id)=(81eae229-8271-4080-b471-d64ea3bda4a5) is still referenced from table "ship_order_logs".

我们的数据库用的是postgreSQL。

恍然大悟,一定是删除record表数据,但是logs表有record表外键的原因。于是去数据库确认,发现,果然测试环境的数据库中配了级联删除,而生产的数据库没有配置。

只需要将外键的 On Delete 改成 CASCADE就OK啦。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值