驗證:
建表sql
//id為主鍵
//name 為唯一索引
CREATE TABLE `user` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`name` VARCHAR ( 255 ) DEFAULT NULL,
`age` INT ( 11 ) DEFAULT NULL,
`code` VARCHAR ( 255 ) DEFAULT NULL,
PRIMARY KEY ( `id` ),
KEY `idx_age` ( `age` ) USING BTREE
) ENGINE = INNODB AUTO_INCREMENT = 1570068 DEFAULT CHARSET = utf8
需要關閉自動送出,通過
set @@autocommit=0;
設定為手動送出。0代表手動送出,1代表自動送出。
結合一下執行個體驗證
執行個體1:
使用主鍵id為條件去查詢,然後開啟另一個事務去更新資料,更新被阻塞,加鎖了,鎖定要查詢的id為1的行資料。
- 圖一為第一個事務,并且沒有送出事務
- 圖二為第二個事務,去更新資料,被阻塞了
- 圖三為第二個事務,長時間拿不到鎖報錯。
- 執行個體2:
我們在開啟一個事務對另一條id為2的資料進行更新,