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 error42601]error:FORMAT“
@FathurRohman处或附近的语法错误。在这种情况下,命令需要字符串文本。您可以尝试将整个语句包装在EXECUTE
命令中。请参阅更新的答案。