在mysql數據庫中行鎖for update怎么利用,對某些數據加了行鎖,其他用戶和事務就不克不及再加鎖,必需解鎖今后才能加鎖,就是數據只能一個事務操作,其他事務不克不及點竄只能讀取。我寫的經驗對你進修mysql有幫忙的話,給我投票、點贊或者保藏!
1怎么獲得過程返回多個記實集
1數據庫的共享鎖
1查詢列轉當作字符串
登錄mysql,在test數據庫中新建一個表:
CREATE TABLE `shoufei` ( `id` int(11) NOT NULL AUTO_INCREMENT, `shijian` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `xiangmu` varchar(20) NOT NULL, `jiage` float NOT NULL, `shuliang` int(11) NOT NULL, `jine` float DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
在表增添一些數據。
insert into `shoufei` (`id`, `shijian`, `xiangmu`, `jiage`, `shuliang`, `jine`) values('1','2019-01-28 11:15:52','銀翹解毒丸','2','10','20');
insert into `shoufei` (`id`, `shijian`, `xiangmu`, `jiage`, `shuliang`, `jine`) values('2','2019-01-28 11:15:59','甘草片','15','2','30');
insert into `shoufei` (`id`, `shijian`, `xiangmu`, `jiage`, `shuliang`, `jine`) values('3','2019-01-28 11:16:04','阿莫西林','20','2','40');
insert into `shoufei` (`id`, `shijian`, `xiangmu`, `jiage`, `shuliang`, `jine`) values('4','2019-01-28 11:16:08','午時茶','8','1','8');
insert into `shoufei` (`id`, `shijian`, `xiangmu`, `jiage`, `shuliang`, `jine`) values('5','2019-01-28 11:16:12','銀翹解毒丸','2','10','20');
在mysql中新建兩個用戶abc_1、abc_2,兩個用戶登錄mysql。
abc_1用戶對id=2的數據增添行鎖:
SELECT * FROM shoufei WHERE id=2 FOR UPDATE;
abc_1用戶對id=2的數據點竄jiage=20:
UPDATE shoufei SET jiage=20 WHERE id=2;
abc_1用戶沒有提交使命,只能本身看到成果。
abc_2用戶查詢id=2的數據,此中jiage沒有點竄因為abc_1用戶沒有提交使命:
SELECT * FROM shoufei WHERE id=2;
abc_2用戶對id=2的數據增添行鎖(沒有當作功,超時,abc_1用戶沒有解鎖):
SELECT * FROM shoufei WHERE id=2 FOR UPDATE;
abc_1用戶提交使命commit,把id=2的數據jiage=20,解鎖數據。
abc_2用戶,查詢id=2的數據而且加鎖(解鎖當作功,查詢abc_1用戶點竄的數據jiage=20):
SELECT * FROM shoufei WHERE id=2 FOR UPDATE;
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!