2012-05-18 92 views
1

请帮我正确的SQL语句:PostgreSQL触发通知

CREATE TRIGGER transaction_insert 
    AFTER INSERT ON transaction 
    FOR EACH ROW 
    WHEN (NEW.tr_type = 55) 
    EXECUTE PROCEDURE pg_notify('check_close', to_char(NEW.n_transaction, 999999)); 

我需要添加tr_type=55行时收到通知。 tr_typeint。 n_transaction是int

Postgresql 8.3.4

请帮忙!

+1

请注意, “tramsaction” 是一个保留字。命名表“交易”是一个不错的选择。 – wildplasser

回答

2

尝试以下操作:

CREATE TRIGGER transaction_insert 
    AFTER INSERT ON transaction 
    FOR EACH ROW EXECUTE PROCEDURE transaction_insert_check_close(); 


CREATE OR REPLACE FUNCTION transaction_insert_check_close() RETURNS TRIGGER AS $transaction_insert_check_close$ 
BEGIN 
    IF (NEW.tr_type = 55) THEN 
     PERFORM pg_notify('check_close', to_char(NEW.n_transaction, 999999)); 
    END IF; 

    RETURN NEW; 
END; 

$transaction_insert_check_close$ LANGUAGE plpgsql;