PostgreSQL 用户定义类型成员比较

Posted

技术标签:

【中文标题】PostgreSQL 用户定义类型成员比较【英文标题】:PostgreSQL user defined type member compare 【发布时间】:2013-01-28 09:21:24 【问题描述】:

我有如下表定义:

 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_是对应类型的预初始化变量。

它应该如何擦除/修改一行,其单元成员变量满足给定条件?

【问题讨论】:

【参考方案1】:

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

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

请参阅文档中的Accessing Composite Types。

【讨论】:

以上是关于PostgreSQL 用户定义类型成员比较的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 数组类型

尝试比较结构成员值时收到以下错误

使用 PostgreSQL 数组进行列表推导

PostgreSQL 数据类型

postgresql——索引

postgresql----数组类型和函数