我有一个触发器函数,该函数将审核表上进行的事务。

CREATE or REPLACE FUNCTION audit()
  returns trigger
  language plpgsql
as $$
begin
EXECUTE FORMAT ('INSERT INTO %I.audit VALUES (%L,%L,%L)',TG_TABLE_SCHEMA, TG_TABLE_NAME, TG_OP, now());
 RETURN NEW;
end;
$$

但是,我不断收到“错误:整数的无效输入语法:“ triggerTable”,其中:EXECUTE语句的PL / pgSQL函数audit()第3行”(其中触发器表是已触发此函数的表)

我是否认为我的execute查询的语法错误,但是我无法隔离出哪里。 任何反馈都将受到欢迎

===============>>#1 票数:3 已采纳

问题在于转换为目标表。 一些目标列是整数,但是您将文本推入其中。 这是同样的错误:

postgres=# create table foo(a int);
CREATE TABLE

postgres=# insert into foo values('AHOJ');
ERROR:  invalid input syntax for integer: "AHOJ"
LINE 1: insert into foo values('AHOJ');
                               ^

看起来审核表的第一列是整数(可能是id),但是您将表名压入其中。

===============>>#2 票数:0

您正在传递三个占位符的四个值。 我认为“审核”应该是TG_TABLE_NAME的占位符?

  ask by user3277403 translate from so

未解决问题?本站智能推荐: