Postgresql Postgres使用动态命令复制到程序

Postgresql Postgres使用动态命令复制到程序,postgresql,triggers,command,Postgresql,Triggers,Command,在表事件中插入后,我有一个要执行的命令,该命令是: /usr/bin/php /var/www/app/artisan broadcast --sid=14 --cid=89 哪个数字14和89是动态的,取决于插入的数据 为此,我创建了如下触发器: CREATE TRIGGER insert_event AFTER INSERT ON event FOR EACH ROW EXECUTE PROCEDURE call_artisan_broadcast(); CREATE OR REP

在表
事件中插入后,我有一个要执行的命令,该命令是:

/usr/bin/php /var/www/app/artisan broadcast --sid=14 --cid=89
哪个数字14和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;
我创建了如下触发函数:

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
连接起来

我的问题是如何在触发器中将
复制到程序中的字符串连接起来?

尝试以下操作:

EXECUTE format('COPY (SELECT 1) TO PROGRAM ''/usr/bin/php /var/www/app/artisan broadcast --sid=%s --cid=%s'' ', NEW.sid, NEW.cid);

不幸的是,这不起作用,它是product error
42601]error:FORMAT“
@FathurRohman处或附近的语法错误。在这种情况下,命令需要字符串文本。您可以尝试将整个语句包装在
EXECUTE
命令中。请参阅更新的答案。