我无法弄清楚如何为规则指定多个命令。
根据{{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,我没有在任何地方找到一个多命令规则的例子。
那么,如何为规则正确定义多个命令?它甚至可能吗?
答案 0 :(得分:1)
根据评论,问题在于我使用的数据库管理工具 - Adminer。
它以某种方式切片/破坏查询,因此您无法在规则中创建多个命令。
请注意,即使在(截至目前)最新版本3.7.1中也存在此错误。
感谢a_horse_with_no_name帮助我解决此问题。