Locks a table.
概要
LOCK [TABLE]name [, ...] [IN lockmode MODE] [NOWAIT]
where lockmode is one of:
ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
| SHARE | SHAREROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE
描述
LOCK TABLE获取一个表级锁,如果需要释放任何冲突的锁,则等待。
如果指定NOWAIT,则LOCK TABLE不等待获取所需的锁:如果不能立即获取该命令,则该命令将中止并发出错误。一旦获得,锁将保持当前交易的剩余部分。没有UNLOCK TABLE命令;锁总是在交易结束时被释放。
对于引用表的命令自动获取锁定,Greenplum数据库始终使用限制最小的锁定模式。 LOCK TABLE提供了可能需要更多限制性锁定的情况。例如,假设应用程序在Read Committed隔离级别运行事务,并且需要确保表中的数据在事务持续时间内保持稳定。要实现这一点,您可以在que_g之前在表上获取SHARE锁定模式。这将防止并发数据更改,并确保表的后续读取可以看到提交的数据的稳定视图,因为SHARE锁定模式与由作者获取的ROW EXCLUSIVE锁冲突,并且您的LOCK TABLE名称IN SHARE MODE语句将等到任何并发持有者的ROW EXCLUSIVE模式锁提交或回滚。因此,一旦你获得锁,就没有没有提交的写作;此外,没有一个可以开始,直到你释放锁。
在Serializable隔离级别运行事务时,要实现类似的方法,您必须在执行任何SELECT或数据修改语句之前执行LOCK TABLE语句。可序列化事务的数据视图将在其第一个sELEc