鎖
數(shù)據(jù)庫自動帶鎖穿香,insert袜蚕,update,delete(排他鎖) 注意亩钟,這個表格的引擎需要為Innodb的 在mysql中做事物的實驗乓梨,記住要設置為手動式提交事物 Set autocommit=0;
排他鎖,在select語句最后就加上for update Select * from student where uid=1 for update 共享鎖清酥,在語句最后加上lock in share mode Select * from user where uid=1 lock in share mode
共享鎖可以向一條記錄加入多個共享鎖扶镀,但是要轉成排他鎖的話,需要等待其他的共享鎖松開焰轻,后面繼續(xù)續(xù)又其他事物排他鎖加入臭觉,mysql會自動拒絕
實驗操作
兩個訪問分別都設置為了手動事物,一個事物操作插入數(shù)據(jù)辱志,然后另一個查詢蝠筑,會發(fā)現(xiàn)插入的數(shù)據(jù)沒有出現(xiàn)在數(shù)據(jù)庫中。
當我們提交后揩懒,添加的數(shù)據(jù)才顯示在數(shù)據(jù)庫中什乙。
當我們回滾后,前面添加的SQL語句則無效
人為加排他鎖已球,別人只能查詢數(shù)據(jù)而不能修改數(shù)據(jù)臣镣,如果加鎖對象還未提交或回滾辅愿,修改數(shù)據(jù)將會超時。
只有等加鎖對象提交或者回滾忆某,別的對象才能對數(shù)據(jù)進行修改点待;
但是因為我們給select添加的是行級排他鎖,所以別人不可以修改我們所添加鎖的行弃舒,但是沒有加鎖的行癞埠,別人是可以修改的。