我对 PostgreSQL tidscan的理解

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

PostgreSQL中,有一种 tidscan。当我在使用cursor的时候,会用到此种scan:

复制代码
[postgres@lex pgsql]$ cat ./data/test.sqlCREATE OR REPLACE Function FindCourse
   ( name_in IN varchar )
   RETURNS integer LANGUAGE plpgsql AS $$
DECLARE
    cnumber integer;
    c1 CURSOR
    FOR
       SELECT course_number, instructor
        from course_tbl
        where course_name = name_in
        FOR UPDATE;

BEGIN

BEGIN
open c1;
fetch c1 into cnumber;

IF not found THEN
     cnumber := 9999;
ELSE
     UPDATE course_tbl
        SET instructor = 'SMITH'
        WHERE CURRENT OF c1;
    COMMIT;
END IF;

close c1;

EXCEPTION
WHEN OTHERS THEN
END;
RETURN cnumber;
END;$$;
[postgres@lex pgsql]$ 
复制代码

 下面再进行一下修正:

在PostgreSQL的 function 里面,是不允许进行commit的。所以其实,上面的程序需要改成:

复制代码
[postgres@lex pgsql]$ cat ./data/test.sqlCREATE OR REPLACE Function FindCourse
   ( name_in IN varchar )
   RETURNS integer LANGUAGE plpgsql AS $$
DECLARE
    cnumber integer;
    c1 CURSOR
    FOR
       SELECT course_number, instructor
        from course_tbl
        where course_name = name_in
        FOR UPDATE;

BEGIN

BEGIN
open c1;
fetch c1 into cnumber;

IF not found THEN
     cnumber := 9999;
ELSE
     UPDATE course_tbl
        SET instructor = 'SMITH'
        WHERE CURRENT OF c1;
END IF;

close c1;

EXCEPTION
WHEN OTHERS THEN
END;
RETURN cnumber;
END;$$;
[postgres@lex pgsql]$ 
复制代码






相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
关系型数据库 PostgreSQL
postgresql中geom处理
pgsql中的geom格式处理
76 0
|
8月前
|
SQL 存储 关系型数据库
PostgreSQL
PostgreSQL 是一款功能强大的开源关系型数据库管理系统,它支持 SQL(结构化查询语言)并提供了许多高级功能,如存储过程、视图、触发器、自定义数据类型等。PostgreSQL 适用于许多场景,如 Web 应用、数据仓库、科学计算等。
63 3
|
9月前
|
存储 关系型数据库 数据库连接
PostgreSQL很多优秀的书籍
PostgreSQL很多优秀的书籍
385 1
|
存储 JSON 安全
PostgreSQL 13
背景         PostgreSQL 全球开发组于2020年9月24日宣布PostgreSQL 13正式发布,作为世界上最先进的开源数据库,PostgresSQL 13是目前的最新版本。         阿里云是中国地区第一家支持PostgreSQL 13的云厂商,在 RDS 和 专属集群 两条产品线都提供了
|
关系型数据库 大数据 数据库
PostgreSQL 11 小记
## 关于 PostgreSQL [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) 是世界上最先进的开源数据库。 PostgreSQL 最早可追溯到 1973 年,当时加州大学伯克利分校的两位科学家,[Michael Stonebraker](https://en.
5509 0
|
关系型数据库 PostgreSQL 数据库
|
关系型数据库 PostgreSQL
|
关系型数据库 PostgreSQL 存储
|
关系型数据库 PostgreSQL SQL