2
我无法弄清楚如何指定一个规则的多个命令。
按照documentation,用于创建规则的语法是:规则与多个命令
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,但同时执行查询的其余部分,因此不正确地使用一个插入命令创建规则。
注意:我的版本是9.0,我还没有找到任何地方的多命令规则的一个例子。
那么,如何正确定义一条规则的多个命令呢?它甚至有可能吗?
您是否尝试使用“常规”插入:'插入测试(b)值(false);'而不是? –
是的,但结果完全一样:**错误:输入结束时的语法错误第4行:INSERT INTO测试(b)VALUES(FALSE)** – Webmut
有一件事:您没有终止“创建规则”带有';'的语句。如果我这样做,你的代码适用于我(至少在'psql'中 - 你可能需要告诉你的SQL客户端'create'语句是一个* single *语句而不是三个单独的语句) –