如何解决MySQL的:交易?插入并更新
| 我需要做2查询。 基本上是MysqL_query(\"INSERT INTO table ($value1,$value2)\");
和
MysqL_query(\"UPDATE table2 SET field1 = \'$value1\',field2 = \'$value2\'\");
我想我可以做一个
if (MysqL_query(\"INSERT ...\") !== false) {
MysqL_query(\"UPDATE ...\");
}
在这种情况下,我应该使用交易吗?我应该如何使用它?
还是我可以这么简单吗?
谢谢
解决方法
如果您想要某种“全有或全无”行为,通常将使用事务。
基本上,通过交易,您可以:
开始交易
进行第一个查询
如果成功,请执行第二个查询
如果成功,则提交事务
否则,回滚事务-取消与该事务相对应的两个查询。
如果要使用
mysql_*
函数,则必须:
通过START TRANSACTION
查询开始交易
进行查询
根据这些查询的结果,执行COMMIT
或ROLLBACK
查询。
要检测查询是否成功,您确实可以检查ѭ7ѭ的返回值:如果发生错误,它将返回false
。
注意:MySQL是旧的扩展-它没有处理事务的功能;这意味着您必须将它们作为常规查询来处理。
使用MySQLi,您可以使用:
mysqli::autocommit()
禁用自动提交
和mysqli::commit()
或mysqli::rollback()
,对于插入和更新,MySQL有一个很好的替代解决方案-\“ ON DUPLICATE KEY UPDATE \”。它可以在单个查询中安全地执行您想要的操作:
INSERT .... ON DUPLICATE KEY UPDATE
(在这种情况下,密钥也必须设置为唯一)
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。