第八十一章 SQL命令 UNLOCK
2023-09-11 14:15:37 时间
第八十一章 SQL命令 UNLOCK
解锁表
大纲
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
错误。
UNLOCK
和UNLOCK TABLE
是同义词。
UNLOCK
命令用来反转LOCK
操作。
即使没有锁被持有,UNLOCK
命令也会成功完成。
可以使用LOCK
多次锁定一个表;
必须显式解锁表,解锁次数为表被显式锁定的次数。
权限
该命令为特权操作。
在使用UNLOCK IN SHARE MODE
之前,进程必须对指定的表拥有SELECT
权限。
在使用UNLOCK IN EXCLUSIVE MODE
之前,进程必须对指定的表具有INSERT
、UPDATE
或DELETE
权限。
对于IN EXCLUSIVE MODE, INSERT
或UPDATE
特权必须在表的至少一个字段上。
未能持有足够的特权将导致SQLCODE -99
错误(特权违反)。
可以通过调用%CHECKPRIV
命令来确定当前用户是否具有必要的特权。
通过调用$SYSTEM.SQL.Security.CheckPrivilege()
方法,可以确定指定的用户是否具有必要的表级特权。
Nonexistent Table
如果试图解锁一个不存在的表,则unlock
会失败,并出现编译错误,并且会出现SQLCODE=-30: table 'SQLUser. txt . txt
消息。
mytable”未找到。
示例
下面的嵌入式SQL示例创建一个表,锁定它,然后解锁它:
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
}
}
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
}
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Unlock1()
锁表
解锁表
相关文章
- SQL SERVER 2012启动失败 because upgrade step 'SSIS_hotfix_install.sql' 失败
- SQL SERVER普通用户需要什么权限才能执行sp_configure命令
- SQL Tune Report–sqltrpt.sql
- ORACLE——Instant Client配置SQL*LDR、EXP等命令工具
- SQL 多组数据中取每一组最新的数据
- [Postgres] Removing Data with SQL Delete, Truncate, and Drop
- SQL Server 2005数据库安装
- 查询SQL存储过程创建时间
- SQL语句--INSERT INTO SELECT 语句用法示例
- 对于PowerDesigner中设计表自动生成Sql的分析
- SQL Server 2008 R2用户'sa'登录失败(错误18456)
- 64位win7下PL/SQL Developer 报“ORA-12154: TNS:无法解析指定的连接标识符”问题的一个解决办法
- SQL SERVER服务器链接连接(即sql server的跨库连接)
- Atitit 读取数据库的api orm SQL Builder sql对比 目录 1.1. 提高生产效率的 ORM 和 SQL Builder1 1.2. SQL Builder 在 SQL
- Database之SQLSever:SQL命令实现理解索引、规则、默认概念及其相关案例之详细攻略
- Database之SQLSever:SQLSever数据表管理(GUI法/SQL语句命令法两种方法实现建立表、修改表,以及增、删、改、查)之详细攻略
- Database之SQLSever:SQL命令实现理解索引、规则、默认概念及其相关案例之详细攻略
- Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份、差异备份、日志备份)、还原、删除、修改数据库等案例)之详细攻略
- SQL基础【二十、索引】(超细致版本,前理论,后实践,应对sql面试绰绰有余)
- 查询和删除数据表中反复数据的sql
- 【SQL干货】一条sql按季度统计交易数据
- Node.js:insert-sql帮助开发者生成SQL插入语句
- 【编程实践】每个开发者都应该知道的数据库查询 SQL 命令
- 基于时间的 SQL注入研究
- sql 精读(三) 标准 SQL 中的编号函数示例
- sql 精读(一)标准 SQL 中的分析函数概念
- 【SQL开发实战技巧】系列(四十一):Oracle12C常用新特性☞APPROX_COUNT_DISTINCT以及TEMP UNDO(临时undo记录可以存储在一个临时表中)