1. 程式人生 > >mysql資料庫關於事物的問題?求解答

mysql資料庫關於事物的問題?求解答

表格程式碼:

CREATE TABLE `t_teacher` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `deposit` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8;

一個表格如下:

                

操作程式碼如下:

程式碼1:

START TRANSACTION;
SELECT * FROM t_teacher;
UPDATE t_teacher SET deposit = deposit+100 WHERE name ='老李';
INSERT INTO t_teacher(id,name,deposit) VALUES (8,'老張',7000);
ROLLBACK;
COMMIT;

程式碼2:

START TRANSACTION;
SELECT * FROM t_teacher;
UPDATE t_teacher SET deposit = deposit+100 WHERE name =
'老李'; INSERT INTO t_teacher(name,deposit) VALUES ('老張',7000); ROLLBACK; COMMIT;

2個程式碼不同點在於第4行;單獨執行時程式碼1不能成功執行,程式碼2能成功執行。

若是將程式碼1和程式碼2分別先執行1遍,由於 ROLLBACK 的影響,資料庫不會發生改變。

若是在程式碼1執行1遍後,在只執行 COMMIT; 後,會造成資料庫的值改變,其結果相當於執行了行3;

但是在程式碼2執行1便後,在執行 COMMIT;  後,資料庫的值不發生改變。

請問這是什麼原因?