【发布时间】:2015-12-14 11:11:19
【问题描述】:
我正在使用 PostgreSQL 8.1 并为表创建了一个触发器,因此如果更新或插入某些内容,它也会在日志表中注册,但我遇到了 NULL 值的问题:
如果我使用 NULL 值更新列,那么它不会向日志中插入任何值,但是使用 char 到 char 会很好,所以也许我遗漏了一些东西。
表是这样创建的:
CREATE TABLE log_test(
id_test integer NOT NULL DEFAULT nextval('id_test_seq'),
type char(3),
product char(10),
table char(15),
field char(10),
old_val char(10),
new_val char(10),
user char(10),
event char(10),
date timestamp with time zone NOT NULL DEFAULT now(),
CONSTRAINT "log_test_prim" PRIMARY KEY ("id_test")
);
触发器的创建方式如下:
CREATE FUNCTION "public"."log_test_trigger" () RETURNS "trigger" AS 'BEGIN
...
IF (TG_OP = ''UPDATE'') THEN
IF (NEW.name <> OLD.name) THEN
INSERT INTO log_test (type, table, field, old_val, new_val, user, event) VALUES (NEW.type, TG_RELNAME, ''name'', OLD.name, NEW.name, NEW.user, ''UPDATE'');
END IF;
...
END;' LANGUAGE "plpgsql"
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
有什么帮助吗?
【问题讨论】:
标签: database postgresql triggers