mysql數據庫關於事物的問題?求解答
阿新 • • 發佈:2019-01-10
span 數據庫 clas .com sta 表格 not values 圖片
表格代碼:
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; 後,數據庫的值不發生改變。
請問這是什麽原因?
mysql數據庫關於事物的問題?求解答