【发布时间】:2020-08-19 15:30:48
【问题描述】:
我正在尝试为 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));
【问题讨论】:
标签: sql postgresql triggers sql-insert postgresql-11