文章目錄
- openGauss學習筆記-40 openGauss 高級數據管理-鎖
- 40.1 語法格式
- 40.2 參數說明
- 40.3 示例
openGauss學習筆記-40 openGauss 高級數據管理-鎖
如果需要保持數據庫數據的一致性,可以使用LOCK TABLE來阻止其他用戶修改表。
例如,一個應用需要保證表中的數據在事務的運行過程中不被修改。為實現這個目的,則可以對表使用進行鎖定。這樣將防止數據不被并發修改。
LOCK TABLE只在一個事務塊的內部有用,在事務結束時就會被釋放。
40.1 語法格式
LOCK [ TABLE ] name IN lock_mode MODE
40.2 參數說明
-
name
要鎖定的表的名稱。
-
lock_mode
鎖的模式。基本的有:
-
ACCESS EXCLUSIVE
這個模式保證其所有者(事務)是可以訪問該表的唯一事務。也是缺省鎖模式。
-
ACCESS SHARE
只讀取表而不修改的鎖模式。
-
40.3 示例
在執行刪除操作時對一個表進行ACCESS EXCLUSIVE鎖。
--創建示例表格。
openGauss=# CREATE TABLE graderecord ( number INTEGER, name CHAR(20), class CHAR(20), grade INTEGER);
--插入數據。
openGauss=# insert into graderecord values('210101','Alan','21.01',92);
insert into graderecord values('210102','Ben','21.01',62);
insert into graderecord values('210103','Brain','21.01',26);
insert into graderecord values('210204','Carl','21.02',77);
insert into graderecord values('210205','David','21.02',47);
insert into graderecord values('210206','Eric','21.02',97);
insert into graderecord values('210307','Frank','21.03',90);
insert into graderecord values('210308','Gavin','21.03',100);
insert into graderecord values('210309','Henry','21.03',67);
insert into graderecord values('210410','Jack','21.04',75);
insert into graderecord values('210311','Jerry','21.04',60);--啟動進程。
openGauss=# START TRANSACTION;--給示例表格。
openGauss=# LOCK TABLE graderecord IN ACCESS EXCLUSIVE MODE;--刪除示例表格。
openGauss=# DELETE FROM graderecord WHERE name ='Alan';openGauss=# COMMIT;
👍 點贊,你的認可是我創作的動力!
?? 收藏,你的青睞是我努力的方向!
?? 評論,你的意見是我進步的財富!