我偶然得到了这个:
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) 来自文档- 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)