在数据库查询中查找symfony2时,我有18个查询。 (我认为这很多)我只更新了一条记录。
反正。我还看到一些查询被命名为“ COMMIT ”和“ START TRANSACTION ”。哪个不太清楚它的作用。任何人都可以向我解释一下吗?感谢。
这里是我对Symfony2的一个例子
答案 0 :(得分:3)
Jovan的链接是一个更好的阅读,但在外行的条件下, START TRANSACION 和 COMMIT 之间的所有查询都被视为一个整体;意思是,如果其中一个查询失败,那么他们都会回滚'并失败。 START TRANSACTION 只是表示分组的开始, COMMIT 完成它。当您在逻辑上需要发生所有查询时使用它。
比如说你想插入一个新员工,他们有来设置一些权限。您需要插入用户表,然后插入 user_roles 表。
现在,假设您不使用上述内容,并尝试运行以下两个插入内容:
INSERT INTO user (...);
INSERT INTO user_roles (...);
如果第一个查询有效,但第二个查询没有?您将拥有一个没有任何权限的“悬空”用户,他们将坐在数据库中。
如果你改为使用如下所示的交易,你可以确保所有查询都有效,或者都不起作用。
START TRANSACTION;
INSERT INTO user (...);
INSERT INTO user_roles (...);
COMMIT;
答案 1 :(得分:1)
因为数据库事务是非常严肃的主题,而不是我在这里非常简短地解释它,我认为阅读这篇wiki文章会更有益: