openGauss学习笔记40 openGauss 高级数据管理锁

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;

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

上一篇 MySQL 8.0版本10个全新特性与优化功能一览
下一篇 linux系统centos上传下载文件教程