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

mysql數據庫關於事物的問題?求解答

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數據庫關於事物的問題?求解答