微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL的:交易?插入并更新

如何解决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 举报,一经查实,本站将立刻删除。