【发布时间】:2013-11-22 08:18:54
【问题描述】:
我将我的 PhpMyAdmin 数据库引擎从 MyISAM 更新为 INNODB 以允许回滚。
这是我的 SQL 查询:
START TRANSACTION;
UPDATE jkm_content SET state=0 WHERE title IN ('title-1','title2');
结果:
start transaction;# MySQL returned an empty result set (i.e. zero
rows).
UPDATE jkm_content SET state=1 WHERE title IN ('title-1','title2');# 2 rows affected.
1) 所以该语句通知我有 2 行受到影响,但更改没有出现在任何地方(在我的数据库和网站中都没有)。我虽然 start transaction 可以让我可视化更改(暂时DB)然后如果我满意我“提交”查询。 (我知道我需要commit 来更新数据库,但如果我commit 更改将是永久性的)。
2) 那我不明白rollback的意思,如果我在提交之前看不到效果。这两个查询有什么区别:
START TRANSACTION;
UPDATE jkm_content SET state=0 WHERE title IN ('title-1','title2');
与
START TRANSACTION;
UPDATE jkm_content SET state=0 WHERE title IN ('title-1','title2');
ROLLBACK;
3) 如果我没记错的话,这些功能都是一样的:
START TRANSACTION
BEGIN
BEGIN WORK
【问题讨论】:
标签: php mysql sql transactions rollback