zoukankan      html  css  js  c++  java
  • PostGIS之路——支持长事务函数和特例函数

    一、支持长事务函数

            这个模块和相关的pl / pgsql功能已经被实现来支持长事务锁定的通过Web对象服务特例。

     1、AddAuth

           添加一个授权用于当前事务。创建/增加一个称为 temp_lock_have_table的临时表用来锁定当前事务标识符和授权。

    boolean AddAuth(text auth_token);

    示例SQL:

    SELECT LockRow('myspatial_table', '353', 'priscilla');
    BEGIN TRANSACTION;
    SELECT AddAuth('joey');
    UPDATE myspatial_table SET geom = ST_Translate(geom,2,2) WHERE gid = 353;
    COMMIT;

    2、CheckAuth

          检查对行的update和delete操作是否已授权。注意:如果一个授权触发已经存在在这个函数将错误;如果不启用事务支持,函数抛出一个异常。

    integer CheckAuth(text a_schema_name, text a_table_name, text a_key_column_name);
    integer CheckAuth(text a_table_name, text a_key_column_name);

    示例SQL:

    SELECT CheckAuth('public', 'myspatial_table', 'gid');

    3、DisableLongTransactions

           关闭长事务支持。该函数删除长事务支持元数据表,。

    text DisableLongTransactions();

    示例SQL:

    SELECT DisableLongTransactions();

    4、EnableLongTransactions

          启动长事务支持。该函数创建长事务支持元数据表,在使用其他该节函数时需要被执行。执行2次无所谓。

    text EnableLongTransactions();

    示例SQL:

    SELECT EnableLongTransactions();

    5、LockRow

         锁定行。

    integer LockRow(text a_schema_name, text a_table_name, text a_row_key, text an_auth_token, timestamp expire_dt);
    integer LockRow(text a_table_name, text a_row_key, text an_auth_token, timestamp expire_dt);
    integer LockRow(text a_table_name, text a_row_key, text an_auth_token);

    示例SQL:
    SELECT LockRow('public', 'myspatial_table', '2', 'joey');

    6、UnlockRows

         解锁行。

    integer UnlockRows(text auth_token);

    示例SQL:

    SELECT UnLockRows('myspatial_table');

    二、特例函数

          这些函数很少用到,除非您的数据是在被破坏。使用这些函数是用于排除故障和修复,在正常情况下,这不会用到。

     1、PostGIS_AddBBox

         给一个几何对象添加范围边框。使用这个函数构建边框范围会很迅速,但是会增加几何对象的大小。注意一般情况是边界框会自动添加,除非你生成的边界框损坏或你有一个旧的安装,然后你需要放弃旧的。

         geometry PostGIS_AddBBox(geometry geomA);

         示例SQL:

     UPDATE myspatial_table
    SET geom = PostGIS_AddBBox(geom)
    WHERE PostGIS_HasBBox(geom) = false;

      2、PostGIS_DropBBox

           删除几何对象缓存的边界框。这将减小几何尺寸,构建他将影响查询速度。他也用于去掉损坏的缓存边界框。如果相交或查询几何关系超出了图形将返回true。

         geometry PostGIS_DropBBox(geometry geomA);

    示例SQL:

           SET the_geom = PostGIS_DropBBox(the_geom)
    WHERE Not (Box2D(ST_AsBinary(the_geom)) = Box2D(the_geom));

     3、PostGIS_HasBBox

           几何对象的边界框被返回将返回true,其他返回false。

    boolean PostGIS_HasBBox(geometry geomA);

    示例SQL:

    SELECT the_geom
    FROM sometable WHERE PostGIS_HasBBox(the_geom) = false;

  • 相关阅读:
    HTML入门(一)
    WEB攻击手段及防御第2篇-SQL注入
    公司来了个新同事不会用 Lombok,还说我代码有问题!
    最流行的 RESTful API 要怎么设计?
    Spring Boot & Restful API 构建实战!
    分布式事务不理解?一次给你讲清楚!
    带着问题学 Kubernetes 架构!
    Linux 与 Unix 到底有啥区别和联系?
    Java虚拟机最多支持多少个线程?
    常用的 Git 命令,给你准备好了!
  • 原文地址:https://www.cnblogs.com/LCGIS/p/2972430.html
Copyright © 2011-2022 走看看