前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL命令 UNLOCK

SQL命令 UNLOCK

作者头像
用户7741497
发布2022-05-07 11:38:19
4620
发布2022-05-07 11:38:19
举报
文章被收录于专栏:hml_知识记录

SQL命令 UNLOCK

解锁表

大纲

代码语言:javascript
复制
UNLOCK [TABLE] tablename IN EXCLUSIVE MODE [IMMEDIATE]

UNLOCK [TABLE] tablename IN SHARE MODE [IMMEDIATE]

参数

  • tablename - 要解锁的表的名称。 Tablename必须是已经存在的表。 表名可以是限定的(schema.table),也可以是非限定的(table)。 非限定表名接受默认模式名。 模式搜索路径被忽略。
  • IN EXCLUSIVE MODE / IN SHARE MODE - IN EXCLUSIVE MODE关键字短语释放常规的IRIS锁。 IN SHARE MODE关键字短语在IRIS级别释放共享锁。

描述

UNLOCK命令用来解锁被LOCK命令锁定的SQL表。 此表必须是已存在的表,您对其具有必要的特权。 如果tablename是临时表,则命令执行成功,但不执行任何操作。 如果tablename是视图,则命令失败,并出现SQLCODE -400错误。

UNLOCKUNLOCK TABLE是同义词。

UNLOCK命令用来反转LOCK操作。 即使没有锁被持有,UNLOCK命令也会成功完成。 可以使用LOCK多次锁定一个表; 必须显式解锁表,解锁次数为表被显式锁定的次数。

权限

该命令为特权操作。 在使用UNLOCK IN SHARE MODE之前,进程必须对指定的表拥有SELECT权限。 在使用UNLOCK IN EXCLUSIVE MODE之前,进程必须对指定的表具有INSERTUPDATEDELETE权限。 对于IN EXCLUSIVE MODE, INSERTUPDATE特权必须在表的至少一个字段上。 未能持有足够的特权将导致SQLCODE -99错误(特权违反)。 可以通过调用%CHECKPRIV命令来确定当前用户是否具有必要的特权。 通过调用$SYSTEM.SQL.Security.CheckPrivilege()方法,可以确定指定的用户是否具有必要的表级特权。

Nonexistent Table

如果试图解锁一个不存在的表,则unlock会失败,并出现编译错误,并且会出现SQLCODE=-30: table 'SQLUser. txt . txt消息。 mytable”未找到。

示例

下面的嵌入式SQL示例创建一个表,锁定它,然后解锁它:

代码语言:javascript
复制
ClassMethod Unlock()
{
    n SQLCODE,%msg
    &sql(
        CREATE TABLE mytest (
            ID NUMBER(12,0) NOT NULL,
            CREATE_DATE DATE DEFAULT CURRENT_TIMESTAMP(2),
            WORK_START DATE DEFAULT SYSDATE
        ) 
    )
    if SQLCODE = 0 { 
        w !,"创建表" 
    } else { 
        w !,"CREATE TABLE error: ",SQLCODE
        q 
    }
}
代码语言:javascript
复制
ClassMethod Unlock1()
{
    n SQLCODE,%msg
    &sql(
        LOCK mytest IN EXCLUSIVE MODE
    ) 
    if SQLCODE =0  { 
        w !,"锁表" 
    } elseif SQLCODE = -110 { 
        w !,"表被另一个进程锁定",!,%msg 
    } else { 
        w !,"其他 LOCK error: ",SQLCODE,!,%msg 
    }
    &sql(
        UNLOCK mytest IN EXCLUSIVE MODE
    ) 
    if SQLCODE=0 { 
        w !,"解锁表" 
    } else { 
        w !,"其他 UNLOCK error: ",SQLCODE,!,%msg 
    }
}
代码语言:javascript
复制
DHC-APP>d ##class(PHA.TEST.SQLCommand).Unlock1()
 
锁表
解锁表

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL命令 UNLOCK
  • 大纲
    • 参数
    • 描述
      • 权限
        • Nonexistent Table
        • 示例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档