规则有多个命令

时间:2013-11-26 12:12:07

标签: sql postgresql

我无法弄清楚如何为规则指定多个命令。
根据{{​​3}},创建规则的语法是:

CREATE [ OR REPLACE ] RULE name AS ON event
TO table [ WHERE condition ]
DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }

根据这个定义,我试图创建以下规则:

CREATE TABLE "test" (
  "b" boolean NULL
);

-

CREATE OR REPLACE RULE test AS 
ON UPDATE TO test DO INSTEAD 
(
INSERT INTO test (b) SELECT FALSE;
INSERT INTO test (b) SELECT FALSE;
)

然而,发生的事情非常奇怪 - 这个查询无法解析输入结束时第一次插入抱怨语法错误第4行:INSERT INTO测试(b)SELECT FALSE ,但同时time执行查询的其余部分,因此仅使用一个插入命令错误地创建规则。

注意:我的版本是9.0,我没有在任何地方找到一个多命令规则的例子。

那么,如何为规则正确定义多个命令?它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

根据评论,问题在于我使用的数据库管理工具 - Adminer
它以某种方式切片/破坏查询,因此您无法在规则中创建多个命令。

请注意,即使在(截至目前)最新版本3.7.1中也存在此错误。

感谢a_horse_with_no_name帮助我解决此问题。