Sql 多命令规则

Sql 多命令规则,sql,postgresql,Sql,Postgresql,我不知道如何为一个规则指定多个命令 根据,创建规则的语法为: 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 name AS ON event
TO table [ WHERE condition ]
DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }
根据此定义,我尝试创建以下规则:

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

然而,发生的情况非常奇怪-此查询无法解析第一个insert,并抱怨输入行4结尾的语法错误:insert INTO test(b)SELECT FALSE,但同时执行查询的其余部分,因此仅使用一个insert命令就错误地创建了规则

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


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

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

请注意,即使在最新版本3.7.1中也存在此错误


感谢一个没有名字的马帮助我解决了这个问题。

您是否尝试使用“常规”插入:
插入测试(b)值(false)相反?是的,但结果完全相同:错误:输入行4结尾的语法错误:插入测试(b)值(FALSE)一件事:您没有用
终止
创建规则
语句。如果我这样做,您的代码对我来说是有效的(至少在
psql
-您可能需要告诉您的SQL客户机
create
语句是一个单独的语句,而不是三个单独的语句)。我确实尝试终止整个语句,但查询仍然失败-它完全忽略了“;”。然而,这让我走上了正确的道路。我曾尝试直接使用psql,规则在那里创建得很好,因此错误实际上存在于我使用的SQL管理工具(Adminer)中。
CREATE OR REPLACE RULE test AS 
ON UPDATE TO test DO INSTEAD 
(
INSERT INTO test (b) SELECT FALSE;
INSERT INTO test (b) SELECT FALSE;
)