2011-05-15 52 views
0

我想寫一個觸發器,但越來越語法錯誤:PostgreSQL的更新觸發器不接受當/條件

CREATE TRIGGER archive_domain_trig 
    AFTER UPDATE OF is_rejected ON pending_domains 
    FOR EACH ROW 
    WHEN (new.is_rejected is True) 
    EXECUTE PROCEDURE archive_domain_fun(); 

錯誤:語法錯誤或接近「的」

不僅如此,但它例如在「何時」出現錯誤時

CREATE TRIGGER archive_domain_trig 
    AFTER UPDATE ON pending_domains 
    FOR EACH ROW 
    WHEN (new.is_rejected is True) 
    EXECUTE PROCEDURE archive_domain_fun(); 

給出:

錯誤:語法錯誤或接近 「何時」。

select version(); 
"EnterpriseDB 8.3.0.116 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.1.0" 

這幾乎和postgres的例子類似,誰能告訴我我在做什麼錯在這裏?

回答

3

我猜想EnterpriseDB 8.3是PostgreSQL 8.3的EnterpriseDB版本。條件觸發器(即WHEN選項)是PostgreSQL 9.0中的一項新功能。比較8.39.0的CREATE TRIGGER文檔。