PostgreSQL插入后触发以在另一个表上写入

问题描述

我正在尝试为pgsql写一个触发器,以保持对特定表的插入,更新和删除的日志。

在创建触发器时,位置171出现错误,但是我真的不知道为什么。

日志表

+----------+-----------+---------------------------+
|table_name|column_name|data_type                  |
+----------+-----------+---------------------------+
|logs      |id         |bigint                     |
|logs      |action     |smallint                   |
|logs      |table      |character varying          |
|logs      |primary    |bigint                     |
|logs      |log        |json                       |
|logs      |processed  |boolean                    |
|logs      |created_at |timestamp without time zone|
|logs      |updated_at |timestamp without time zone|
+----------+-----------+---------------------------+

功能和触发器

CREATE OR REPLACE FUNCTION insert_log (INT,VARCHAR,INT,VARCHAR) RETURNS INT AS $$
    BEGIN
        INSERT INTO public.logs ("action","table","primary","log")
            VALUES ($1,$2,$3,$4)
            RETURNING id;
    END
$$ LANGUAGE plpgsql;

CREATE TRIGGER trigger_clientes_insert
    AFTER INSERT ON xxx.legacy_clientes
    FOR EACH ROW
    EXECUTE FUNCTION insert_log (1,"clientes",id,row_to_json(NEW));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)