POSTGRESQL中触发器中的语法错误

时间:2017-01-15 12:50:42

标签: sql postgresql triggers

我需要为exercice创建触发器,我有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;

THEN附近的语法错误。

谢谢!

1 个答案:

答案 0 :(得分:1)

你甚至不需要条件逻辑:

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

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