??官网地址:LOCK TABLE
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
目的
使用LOCK
?TABLE
?用指定的方式锁定一个或多个表、表分区或表子分区的语句。此锁手动覆盖自动锁定,允许或拒绝其他用户在操作期间访问表或视图。
一些形式的锁可以同时放在同一个表上。其他锁只允许一张桌子上的锁。
先决条件
表或视图必须在您自己的架构中,或者您必须拥有LOCK
?ANY
?TABLE
?系统特权,或您必须拥有任何对象特权(除了READ
?表上或视图上的对象特权。
语法的
语义学
图解
指定包含表或视图的架构.如果你忽略了schema
?,然后甲骨文数据库假设表或视图在您自己的架构中。
TABLE?|?VIEW
指定要锁定的表或视图的名称。
如果你指定view
?然后甲骨文数据库锁定视图的基表。
如果你指定partition_extension_clause
?,然后甲骨文数据库首先获得了表上的隐式锁。表锁与您为分区或子分区指定的锁相同,有两个例外:
如果你指定SHARE
?锁定子分区,然后数据库获得一个隐式的ROW
?SHARE
?把它锁在桌上。
如果你指定EXCLUSIVE
?锁定子分区,然后数据库获得一个隐式的ROW
?EXCLUSIVE
?把它锁在桌上。
如果你指定PARTITION
?和table
?经过组合分区,然后数据库获得对分区的所有子分区的锁。
锁定表的限制
以下限制适用于锁定表:
如果view
?是层次结构的一部分,那么它必须是层次结构的根。
您只能获取自动列表分区表中现有分区的锁。也就是说,当您指定下列语句时,分区键值必须对应于表中已经存在的分区;它不能对应于稍后可能根据需求创建的分区:
LOCK TABLE ... PARTITION FOR (partition_key_value) ...
dblink
指定一个数据库链接到远程甲骨文数据库的表或视图的位置.只有使用甲骨文分布式功能,才能锁定远程数据库上的表和视图。所有的桌子都被LOCK
?TABLE
?声明必须在同一数据库中。
如果你忽略了dblink
?,然后甲骨文数据库假设表或视图在本地数据库上。
另见:
"?远程数据库中对象的引用?"?有关指定数据库连结的资料
锁模?条款
指明下列模式之一:
ROW
?SHARE
?允许对上锁表的并发访问,但禁止用户为独家访问锁定整个表。ROW
?SHARE
?代表着SHARE
?UPDATE
?,这是为了与之前版本的甲骨文数据库兼容。
ROW
?EXCLUSIVE
?就像ROW
?SHARE
?,但也禁止锁定SHARE
?模式。ROW
?EXCLUSIVE
?当更新、插入或删除时,会自动获得锁。
看ROW SHARE.?.
SHARE
SHARE
允许并发查询,但禁止对锁定的表进行更新。
SHARE
?ROW
?EXCLUSIVE
?用于查看整个表,允许其他人查看表中的行,但禁止其他人将表锁在表中。SHARE
?模式或更新行。
EXCLUSIVE
允许在上锁的桌子上查询,但禁止在它上进行任何其他活动。
指定NOWAIT
?如果您希望数据库立即返回控件,如果指定的表、分区或表子分区已经被另一个用户锁定。在本例中,数据库返回一个消息,表明另一个用户已经锁定了表、分区或子分区。
WAIT
使用WAIT
?以表明LOCK
?TABLE
?语句应该等待指定的秒数来获得DML锁。对价值没有限制的integer
?.
如果你不指明NOWAIT
?也不WAIT
?然后,数据库无限期地等待,直到表可用,并锁定它,然后将控件返回给您。当数据库与DML语句同时执行DDL语句时,有时会导致超时或死锁。数据库检测这种超时和死锁,并返回错误。
另见:
甲骨文数据库管理员指南?有关锁定表的更多信息
例子
锁定表格:示例
以下声明锁定了employees
?使用独家模式的表,但如果另一个用户已经锁定了表,则不必等待:
LOCK TABLE employees
IN EXCLUSIVE MODE
NOWAIT;
以下语句锁定远程employees
?可通过数据库链接访问的表格remote
?:
LOCK TABLE employees@remote
IN SHARE MODE;