2013-04-15 80 views
-1

我想创建一个触发器,但是当我使用WHEN语句(如the CREATE TRIGGER docs)时,我得到语法错误。PostgreSQL在语法错误时触发

我当然可以把状态的功能,但我想这将是慢了很多,少美丽

CREATE TRIGGER insert_test 
AFTER INSERT 
ON mountain_stats 
FOR EACH ROW 
WHEN(NOT EXISTS(SELECT * 
FROM mountain_stats_history 
WHERE country=NEW.country AND key=NEW.key AND value=NEW.value)) 
EXECUTE PROCEDURE update_mountain_stats_history(); 
+3

PostgreSQL版本?错误信息? (你链接到9.1文档,但这并不意味着你在9.1)。 –

回答

0

字在当一词取代。

+0

这显然是错误的。触发**的条件是**通过关键字'when'定义的时间 –

+0

@a_horse_with_no_name对不起,我在 – benehsv

2

由于WHEN条件不支持子查询,因此这不起作用(请参阅此处的docs)。

根据你如何编写历史更新函数,它不应该特别显示或不雅。如果您担心写入量过高,则可能会探索优化历史记录更新过程的技巧。

+0

这不适用于其他条件。 – benehsv