欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于数据库事物和外键

程序员文章站 2024-01-10 09:51:23
...
情况是这样的:

表A
id int(11)

表B
a_id int(11)

表B的a_id是表A主键的外键

----------- 万恶的分割线 ------------

我开启了mysql的事物,然后某个操作需要先插入一条数据到表A(以下简称操作一),再插入数据到表B(以下简称操作二)。

操作二依赖操作一插入成功后返回的ID

在开启了事物的情况下,操作一成功之后,往表B插入数据,这时候会检测外键,虽然操作一成功了,但是由于事物还没有提交,所以表A里还没有那条数据,所以操作二会报错。。。

大家是怎么解决这个问题的(我目前的解决办法是取消外键索引!!!)?

回复内容:

情况是这样的:

表A
id int(11)

表B
a_id int(11)

表B的a_id是表A主键的外键

----------- 万恶的分割线 ------------

我开启了mysql的事物,然后某个操作需要先插入一条数据到表A(以下简称操作一),再插入数据到表B(以下简称操作二)。

操作二依赖操作一插入成功后返回的ID

在开启了事物的情况下,操作一成功之后,往表B插入数据,这时候会检测外键,虽然操作一成功了,但是由于事物还没有提交,所以表A里还没有那条数据,所以操作二会报错。。。

大家是怎么解决这个问题的(我目前的解决办法是取消外键索引!!!)?

我试了下。操作二不会报错。你再找找别的原因吧

2个操作分别开启2个事务即可。