小编New*_*ton的帖子

Postgresql:如何在数据库触发器中转义单引号?

我创建了一个数据库触发器来将行数据存储在审计表中。在更新操作期间,此触发器从主表中获取数据并将其插入到历史表中。(历史表有列:日期,操作类型说更新/删除,实际行数据)但是由于输入数据中的引用文本,触发器在某些情况下会失败。

如何在触发器中转义引用的文本?

--My trigger
CREATE OR REPLACE FUNCTION audit.if_modified() RETURNS TRIGGER AS $function$
DECLARE
    temp_row RECORD; -- a temporary variable used on updates/deletes
    v_sql text;
BEGIN
    IF TG_WHEN <> 'AFTER' THEN
        RAISE EXCEPTION 'audit.if_modified() may only run as an AFTER trigger';
    END IF;

v_sql = 'select * from ' || TG_TABLE_NAME::regclass || '_history';
execute v_sql into temp_row;

select now() into temp_row.action_tstamp_tx;
temp_row.action = SUBSTRING(TG_OP,1,1);
IF (TG_OP = 'UPDATE' AND TG_LEVEL = 'ROW') THEN
    temp_row.row_data = OLD;
ELSIF (TG_OP = 'DELETE' …
Run Code Online (Sandbox Code Playgroud)

sql postgresql triggers dynamic-sql plpgsql

4
推荐指数
1
解决办法
5174
查看次数

标签 统计

dynamic-sql ×1

plpgsql ×1

postgresql ×1

sql ×1

triggers ×1