PostgreSQL 用户定义类型成员比较

标签 postgresql plpgsql composite-types

我有下表定义:

 CREATE TYPE product_limit_type AS (
    product_code varchar(5),
    limit_type varchar(30),
    limit_value numeric(4,0)
);

CREATE TABLE rule_locks (
    session_id bigint,
    rule_id bigint,
    product_limit product_limit_type
);

当我执行以下查询时:

DELETE FROM rule_locks
WHERE (session_id=session_id_ AND product_limit.product_code=product_code_);

我从服务器收到这个错误:

ERROR:  missing FROM-clause entry for table "product_limit"
LINE 1: ...FROM rule_locks WHERE (session_id=session_id_ AND product_li...
                                                         ^

session_id_product_code_是对应类型的预初始化变量。

如何删除/修改单元格成员变量满足给定条件的行?

最佳答案

字段名称周围应该有括号以访问其子字段,如:

DELETE FROM rule_locks WHERE (session_id=session_id_
     AND (product_limit).product_code=product_code_);

参见 Accessing Composite Types在文档中。

关于PostgreSQL 用户定义类型成员比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558868/

相关文章:

postgresql - 参数化游标绑定(bind)变量的表名

sql - 如何在查询的 AS 部分包含一个函数?

php - 在 Yii2 中使用 plpgsql 绑定(bind)查询值

sql - 扩展现有的 PostgreSQL 类型

sql - 复合类型数组上的 SUM 和 GROUP BY

sql - 使用每行返回两个值的函数插入

c++ - 实现自定义 Postgres 索引作为扩展

java - Quarkus 如何在 application.properties 中设置环境变量

mysql - PL/pgSQL 中的标记 block

python-3.x - 处理 webhook 时的并发问题