长事务支持函数¶
AddAuth¶
AddAuth — 添加一个用于当前事务的鉴权令牌(authorization token),如果成功返回true。
示例¶
--AddAuth — 添加一个用于当前事务的鉴权令牌(authorization token),如果成功返回true
BEGIN TRANSACTION;
SELECT AddAuth('joey');
ADDAUTH(boolean) |
----------------------
true |
总数目:1
UPDATE geom_table SET geom_type = ST_Translate(geom_type,2,2) WHERE id = 1;
COMMIT;
CheckAuth¶
CheckAuth — 基于鉴权令牌(authorization token),在一个表上创建一个阻止或允许更新或删除表记录的触发器。
返回值¶
返回值为integer类型。
基于鉴权令牌(authorization token),在一个表上创建一个阻止或允许更新或删除表记录的触发器。通过列的<rowid_col>方式来标识行。如果没有指定schema,使用当前current_schema()对应的值
注解
如果该表上面已经有了一个鉴权触发器,函数会返回错误。如果没有开启事务支持,函数会抛出异常。
示例¶
select EnableLongTransactions();
ENABLELONGTRANSACTIONS(text) |
----------------------------------
Long transactions support enabled |
总数目:1
select CheckAuth('sysdba', 'geom_table', 'id');
CHECKAUTH(int) |
--------------------
0 |
总数目:1
select CheckAuth('sysdb', 'geom_table', 'id');
ERROR, namespace "SYSDB" not found
DisableLongTransactions¶
DisableLongTransactions — 关闭长事务支持。该函数会移除对长事务支持所创建的元数据信息表(保存这些空间表的相关信息),并丢掉所有表上面的锁检测的触发器。
参数¶
示例¶
drop table geom_table;
select DisableLongTransactions();
DISABLELONGTRANSACTIONS(text) |
-----------------------------------
Long transactions support disabled |
总数目:1
EnableLongTransactions¶
EnableLongTransactions — 开启长事务支持。该函数会创建开启事务支持所必须的元数据表。在使用本章节其他函数(本节的函数都需要事务支持)前需要调用该函数一次,当然再执行一次也没有什么问题。
参数¶
示例¶
SELECT EnableLongTransactions();
ENABLELONGTRANSACTIONS(text) |
----------------------------------
Long transactions support enabled |
总数目:1
LockRow¶
LockRow — 开启长事务支持。该函数会创建开启事务支持所必须的元数据表。在使用本章节其他函数(本节的函数都需要事务支持)前需要调用该函数一次,当然再执行一次也没有什么问题。
参数¶
a_schema_name
text类型。
a_table_name
text类型。
a_row_key
text类型。
an_auth_token
text类型。
expire_dt
timestamp类型。参数expire默认的过期时间是当前时间的一个小时之后过期 。
示例¶
CREATE TABLE SYSDBA.myspatial_table(gid serial, geom geometry);
INSERT INTO myspatial_table(geom) VALUES(ST_GeomFromText('LINESTRING(1 2, 3 4)',4326) );
SELECT LockRow('SYSDBA','MYSPATIAL_TABLE','2','joey');
LOCKROW(int) |
------------------
1 |
总数目:1
drop table myspatial_table;
CREATE TABLE SYSDBA.myspatial_table_2(gid serial, geom geometry);
INSERT INTO myspatial_table_2(geom) VALUES(ST_GeomFromText('LINESTRING(1 2, 3 4)',4326) );
SELECT LockRow('SYSDBA','MYSPATIAL_TABLE_2','2','joey','2021-02-01'::timestamp);
LOCKROW(int) |
------------------
1 |
总数目:1
drop table myspatial_table_2;
UnlockRows¶
UnlockRows — 开启长事务支持。该函数会创建开启事务支持所必须的元数据表。在使用本章节其他函数(本节的函数都需要事务支持)前需要调用该函数一次,当然再执行一次也没有什么问题。
示例¶
SELECT UnLockRows('joey');
UNLOCKROWS(int) |
---------------------
2 |
总数目:1