3
我的命令,我想在表event
插入後,執行程序,命令爲:Postgres的COPY TO動態命令
/usr/bin/php /var/www/app/artisan broadcast --sid=14 --cid=89
哪個號碼和是動態的,取決於插入的數據。
爲此,我創建觸發器是這樣的:
CREATE TRIGGER insert_event
AFTER INSERT ON event
FOR EACH ROW
EXECUTE PROCEDURE call_artisan_broadcast();
我創建觸發器的功能是這樣的:
CREATE OR REPLACE FUNCTION call_artisan_broadcast()
RETURNS TRIGGER AS
$BODY$
BEGIN
COPY (SELECT 1) TO PROGRAM '/usr/bin/php /var/www/app/artisan broadcast --sid='||NEW.sid||' --cid='||NEW.cid;
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql VOLATILE;
觸發產生錯誤
[42601] ERROR: syntax error at or near "||"
這觸發工作很好,如果命令沒有串聯。我不知道如何連接命令字符串與變量NEW
COPY TO PROGRAM。
我的問題是如何連接在COPY TO PROGRAM
觸發器中的字符串?
可惜,這不行,這是產生錯誤'42601]錯誤:在或接近「FORMAT」' –
@FathurRohman在命令需要一個字符串字面這種情況下,語法錯誤。您可以嘗試在「EXECUTE」命令中包裝整個語句。查看更新的答案。 – Patrick
完美工作,謝謝@Patrick –