Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
POSTGRESQL中我的触发器出现语法错误_Sql_Postgresql_Triggers - Fatal编程技术网

POSTGRESQL中我的触发器出现语法错误

POSTGRESQL中我的触发器出现语法错误,sql,postgresql,triggers,Sql,Postgresql,Triggers,我需要为一个练习创建触发器,我有3个表,其中一个表有一个int参数,我想创建这个触发器: CREATE TRIGGER D1_1 BEFORE INSERT ON T1 FOR EACH ROW WHEN((SELECT COUNT(*) FROM T2) < 1) INSERT INTO T2 VALUES(6) END; 附近的语法错误 谢谢大家! 您甚至不需要条件逻辑: INSERT INTO T2 SELECT 6

我需要为一个练习创建触发器,我有3个表,其中一个表有一个int参数,我想创建这个触发器:

   CREATE TRIGGER D1_1 BEFORE INSERT ON T1 FOR EACH ROW 
   WHEN((SELECT COUNT(*) FROM T2) < 1)
   INSERT INTO T2 VALUES(6) 
   END;
附近的语法错误


谢谢大家!

您甚至不需要条件逻辑:

    INSERT INTO T2
        SELECT 6
        WHERE NOT EXISTS (SELECT 1 FROM t2);

请注意,“不存在”通常比COUNT*=0更有效。NOT EXISTS在第一个匹配行处停止,而不是遍历整个表来计算所有内容-然后在没有行的情况下执行某些操作。

不,我真的需要此触发器,因为我有5个其他触发器,它们是链接的,我需要此触发器^valt。您可以将此逻辑合并到触发器中。我省略了触发器的定义,因为它似乎会分散查询逻辑的注意力。这不是在Postgres中创建触发器的方式。请参见手册中的示例: