mysql在一个查询中提交/回滚并执行三个或更多不同的sql语句

时间:2010-09-24 08:57:07

标签: mysql

我的情况是我需要根据请求更新4个表。

我执行四个语句,例如删除两个插入和一个更新。

如果在执行两次查询后的任何给定时间内数据库失败或由于任何其他原因导致代码退出(可能是任何类型的db错误/异常),该怎么办。

如果发生这种情况,那么许多引用会出错并且oops :-(。 数据完全错误,参考文献不完整。

是否有像多次插入语句一样执行多个sql语句的选项?

或者,如果有一个提交机制(即使有一个我必须学习它在mysql中使用)?

所以,在任何时候我都不希望发生无效录入。

例如......

//开始保存点

//逐个执行所有四个语句

//在此行提交

我正在使用codeigniter框架。

我想对此有任何回复。 (建议/评论/答复)。

谢谢。

2 个答案:

答案 0 :(得分:4)

您正在寻找transactions。在序列的开头执行START TRANSACTION,在结尾处执行COMMIT。如果出现问题,请ROLLBACK。要么所有的更改都要成功,要么都没有。

(如果您使用的是带有数据访问层的编程语言,可能会提供调用方法而不是显式执行COMMIT等查询。)

您需要使用InnoDB表来支持MyISAM无法提供的事务和其他数据完整性功能。

答案 1 :(得分:1)

如果您使用PDo,则会有transaction start,之后您可以执行四个语句,然后commitroll back