关于数据库事物和外键
表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个事务即可。
上一篇: 如何在PHP里启动一个进程以后让它在后台运行._PHP
下一篇: php类的引用问题