如何解决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));
解决方法
您不应该将参数传递给触发函数:它会自动接收java.util.Date
,在这里就足够了。另外,触发函数应返回一个java.util.Date
。
考虑:
Date
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。