我将我的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
命令可以允许我在临时数据库中查看这些变更,然后如果满意就使用"commit"提交查询(我知道需要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