小编heg*_*mon的帖子

魔法列“名称”从何而来?

我偶然得到了这个:

db=> select name from site;
ERROR:  column "name" does not exist
LINE 1: select name from site;
               ^
db=> select site.name from site;
     name
---------------
 (1,mysitename)
(1 row)
Run Code Online (Sandbox Code Playgroud)

第二个查询返回一个包含整行的元组。使用 postgres 9.0.1。

编辑:按请求定义站点。我真的不重要,这个怪癖适用于任何桌子。

db=> \d site
                         Table "public.site"
 Column |  Type   |                     Modifiers
--------+---------+---------------------------------------------------
 id     | integer | not null default nextval('site_id_seq'::regclass)
 title  | text    | not null
Run Code Online (Sandbox Code Playgroud)

postgresql database-design postgresql-9.0

11
推荐指数
1
解决办法
2120
查看次数

应用规则后如何查看查询?

来自文档- 37.3.1.1。“循序渐进的第一条规则”

CREATE TABLE shoelace_log (
    sl_name    text,          -- shoelace changed
    sl_avail   integer,       -- new available value
    log_who    text,          -- who did it
    log_when   timestamp      -- when
);

CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data
    WHERE NEW.sl_avail <> OLD.sl_avail
    DO INSERT INTO shoelace_log VALUES (
                                    NEW.sl_name,
                                    NEW.sl_avail,
                                    current_user,
                                    current_timestamp
                                );
Run Code Online (Sandbox Code Playgroud)

现在有人这样做:

(1) UPDATE shoelace_data SET sl_avail = 6 WHERE sl_name = 'sl7';
Run Code Online (Sandbox Code Playgroud)

解析器生成这个额外的查询

(2) INSERT INTO shoelace_log VALUES (
       shoelace_data.sl_name, 6,
       current_user, current_timestamp )
  FROM shoelace_data
 WHERE …
Run Code Online (Sandbox Code Playgroud)

postgresql

9
推荐指数
1
解决办法
124
查看次数