Php mysql:事务?插入并更新
我需要做两个查询 基本上它是一个Php mysql:事务?插入并更新,php,mysql,transactions,Php,Mysql,Transactions,我需要做两个查询 基本上它是一个 mysql_query("INSERT INTO table ($value1,$value2)"); 及 我想我可以简单地做一件事 if (mysql_query("INSERT ...") !== false) { mysql_query("UPDATE ..."); } 在这种情况下,我应该使用事务吗?我应该如何使用它? 或者我可以简单地说,如果 谢谢如果您想要一些“全有或全无”的行为,您通常会使用事务 基本上,对于事务,您可以: 启动交易 执
mysql_query("INSERT INTO table ($value1,$value2)");
及
我想我可以简单地做一件事
if (mysql_query("INSERT ...") !== false) {
mysql_query("UPDATE ...");
}
在这种情况下,我应该使用事务吗?我应该如何使用它?或者我可以简单地说,如果
谢谢如果您想要一些“全有或全无”的行为,您通常会使用事务 基本上,对于事务,您可以:
- 启动交易
- 执行第一个查询
- 如果成功,则执行第二个查询
- 如果成功,提交事务
- 否则,回滚事务——取消与该事务对应的两个查询
如果使用函数,则必须:
- 使用
查询启动事务Start transaction
- 请回答您的问题
- 根据这些查询的结果,执行
或COMMIT
查询ROLLBACK
false
注意:MySQL是旧的扩展,没有处理事务的功能;这意味着您必须将它们作为常规查询来处理
使用,您可以使用:
- 禁用自动提交
- 或
INSERT .... ON DUPLICATE KEY UPDATE
(在这种情况下,密钥也必须设置为唯一)
如果我在这种情况下是否应该使用事务,这不会回答问题。您是否想要“全部或无”行为?(我们无法为您猜测;-)如果您这样做,请使用交易;如果你不。。。嗯,不需要交易。是的,我想要全部或不想要(但我想我的问题中的IF很清楚)xD。。。。所以基本上,在所有查询之前,我使用START TRANSACTION执行查询,在查询结束时执行提交?如果某个查询失败了,我需要执行回滚,我如何跟踪?好的,你说我应该检查mysql\u查询的返回值。。如果它返回FALSE,我将执行回滚,对吗?。。。但如果我有很多疑问,那就太糟糕了,这就是为什么我们倾向于使用异常(PDO,而不是mysql,它可以在出错时抛出异常);这样,catch语句中只有一个roolback。如果更新失败,可以保留insert吗?
INSERT .... ON DUPLICATE KEY UPDATE