Heim  >  Artikel  >  Backend-Entwicklung  >  关于数据库事物和外键

关于数据库事物和外键

WBOY
WBOYOriginal
2016-06-06 20:17:421224Durchsuche

情况是这样的:

表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个事务即可。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn