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

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

    • name

    • lock_mode

      锁的模式。基本的有:

      • ACCESS EXCLUSIVE

      • ACCESS SHARE

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

    在执行删除操作时对一个表进行ACCESS EXCLUSIVE锁。

    1. openGauss=# CREATE TABLE graderecord
    2. (
    3. number INTEGER,
    4. name CHAR(20),
    5. grade INTEGER
    6. );
    7. --插入数据。
    8. openGauss=# insert into graderecord values('210101','Alan','21.01',92);
    9. insert into graderecord values('210103','Brain','21.01',26);
    10. insert into graderecord values('210204','Carl','21.02',77);
    11. insert into graderecord values('210205','David','21.02',47);
    12. insert into graderecord values('210206','Eric','21.02',97);
    13. insert into graderecord values('210307','Frank','21.03',90);
    14. insert into graderecord values('210308','Gavin','21.03',100);
    15. insert into graderecord values('210309','Henry','21.03',67);
    16. insert into graderecord values('210311','Jerry','21.04',60);
    17. --启动进程。
    18. openGauss=# START TRANSACTION;
    19. --给示例表格。
    20. openGauss=# LOCK TABLE graderecord IN ACCESS EXCLUSIVE MODE;
    21. --删除示例表格。
    22. openGauss=# DELETE FROM graderecord WHERE name ='Alan';