我有一个 PostgreSQL 9 上的触发器,如下所示:
CREATE OR REPLACE FUNCTION clients_update_billingdata_trigger()
RETURNS trigger AS
$BODY$
DECLARE
columnsUpdate TEXT;
BEGIN
columnsUpdate := '';
IF (NEW.rsocial IS DISTINCT FROM OLD.rsocial) THEN
columnsUpdate := columnsUpdate || 'RSocial before: ' || OLD.rsocial || '. RSocial after: ' || NEW.rsocial || E'\n';
END IF;
IF (NEW.legalidentifier IS DISTINCT FROM OLD.legalidentifier) THEN
columnsUpdate := columnsUpdate || 'ILegal before: ' || OLD.legalidentifier || '. ILegal after: ' || NEW.legalidentifier || E'\n';
END IF;
[...]
IF (columnsUpdate != '') THEN
SELECT dblink_exec ('dbname=xxx user=xxx password=xxxxx',
'INSERT INTO BillingDataUpdate (client_id, columnsupdate)
VALUES (''' || NEW.idclient || ''', ''' || columnsUpdate || ''');');
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
< p > NEW.rsocial
的值可以是例如:Tommy's service。如果我关闭触发器,则记录会被正确保存(在other
表中,客户端)因为我使用pg_escape_string
函数在PHP中转义字符串。问题是,如何转义NEW.rsocial
以运行触发器?
提前致谢。