首页 > 其他分享 >openGauss 锁

openGauss 锁

时间:2024-04-28 10:00:12浏览次数:23  
标签:insert -- into graderecord values openGauss

如果需要保持数据库数据的一致性,可以使用LOCK TABLE来阻止其他用户修改表。

例如,一个应用需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以对表进行锁定,这样将防止数据不被并发修改。

LOCK TABLE只在一个事务块的内部有用,在事务结束时就会被释放。

语法格式

LOCK [ TABLE ] name  IN lock_mode MODE

参数说明

  • name

    要锁定的表的名称。

  • lock_mode

    锁的模式。基本的有:

    • ACCESS EXCLUSIVE

      这个模式保证其所有者(事务)是可以访问该表的唯一事务。也是缺省锁模式。

    • ACCESS SHARE

      只读取表而不修改的锁模式。

示例

在执行删除操作时对一个表进行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;

标签:insert,--,into,graderecord,values,openGauss
From: https://www.cnblogs.com/renxyz/p/18163050

相关文章

  • openGauss MOT-SQL覆盖和限制
    MOTSQL覆盖和限制MOT设计几乎能够覆盖SQL和未来特性集。例如,大多数支持标准的PostgresSQL,也支持常见的数据库特性,如存储过程、自定义函数等。下面介绍各种SQL覆盖和限制。不支持的特性MOT不支持以下特性:跨引擎操作:不支持跨引擎(磁盘+MOT)的查询、视图或事务。计划于2021年实......
  • openGauss MOT-VACUUM清理
    MOTVACUUM清理使用VACUUM进行垃圾收集,并有选择地分析数据库,如下所示。【openGauss】在openGauss中,VACUUM用于回收死元组占用的存储空间。在正常的openGauss操作中,删除的元组或因更新而作废的元组不会从表中物理删除。只能由VACUUM清理。因此,需要定期执行VACUUM,特别是在频繁......
  • openGauss dblink
    dblinkdblink是一个可以在一个openGauss数据库会话中连接到其它openGauss数据库的工具,同libpq支持的连接参数一致,可参考链接参数。openGauss默认不编译dblink,下面依次介绍如何编译和使用dblink。编译dblink当前dblink的源码放在contrib/dblink目录中。在编译安装完openGauss数......
  • openGauss file_fdw
    file_fdwfile_fdw模块提供了外部数据封装器file_fdw,可以用来在服务器的文件系统中访问数据文件。数据文件必须是COPYFROM可读的格式,具体请参见COPY的介绍。使用file_fdw访问的数据文件是当前可读的,不支持对该数据文件的写入操作。当前openGauss会默认编译file_fdw,initdb的时候......
  • openGauss Foreign-Data-Wrapper
    ForeignDataWrapperopenGauss的FDW(ForeignDataWrapper)可以实现各个openGauss数据库及远程服务器(包括数据库、文件系统)之间的跨库操作。目前支持的远程数据库类型包括Oracle、Mysql(MariaDB)、openGauss(postgres_fdw)、file_fdw、dblink。用于Oracle的外部数据包装器mysql_......
  • openGauss MOT-SILO增强特性
    MOTSILO增强特性SILO[对比:磁盘与MOT]凭借其基本算法流程,优于我们在研究实验中测试的许多其他符合ACID的OCC算法。然而,为了使SILO成为产品级机制,我们必须用许多在最初设计中缺失的基本功能来增强它,例如:新增对交互式事务的支持,其中事务的SQL运行在客户端实现,而不是作为服务器端......
  • openGauss 如何解决-out-of-memory-allocating-xxx-bytes-after-a-total-of-xxx-bytes
    如何解决"outofmemoryallocatingxxxbytesafteratotalofxxxbytes"报错问题如何解决编译过程中出现的“outofmemoryallocatingxxxbytesafteratotalofxxxbytes”报错。回答报错原因:脚本中的编译过程都添加了-sj参数,同时机器配置较低,内存不足,并发数太大导致......
  • openGauss 轻量版安装包编译
    轻量版安装包编译使用build/script/cmake_package_mini.sh脚本构建openGauss轻量版安装包。前提条件已按照搭建编译环境的要求准备好相关软硬件,并且已参考代码下载下载了代码。已完成开源软件编译构建,具体请参见开源软件编译构建。了解cmake_package_mini.sh脚本的参数选项......
  • openGauss 如何解决-Configure-error-C-compiler-cannot-create-executables-报错
    如何解决“Configureerror:Ccompilercannotcreateexecutables”报错问题如何解决版本编译时出现的“Configureerror:Ccompilercannotcreateexecutables”报错。回答报错原因:binarylibs文件不完整或者被损坏。解决办法:若binarylibs是通过开源软件构建而来,请重新构......
  • openGauss 如何解决-g++-fatal-error-Killed-signal-terminated-program-cclplus-报错
    如何解决"g++:fatalerror:Killedsignalterminatedprogramcclplus"报错问题如何解决编译过程中出现的"g++:fatalerror:Killedsignalterminatedprogramcclplus"报错。回答报错原因:脚本中的编译过程都添加了-sj参数,并发数太大导致错误。解决办法:编译过程中降......