审计触发postgres

时间:2015-12-07 10:50:17

标签: sql postgresql triggers postgresql-9.1 audit

我希望在事情发生变化时将旧记录保存在表格中。我尝试用这个documentation来做。但我仍然得到一个错误。错误是:关系系列不存在。

原始表:

CREATE TABLE "Terra_nub_v1"."Serie"
(
  uuid uuid NOT NULL, -- t.b.v. pakbon
  serie_nr integer NOT NULL,
  aantal_slijpplaten integer,
  producent text,
  locatie text,
  klaar boolean,
  onderzocht boolean,
  gerapporteerd boolean,
  opmerking text,
  verwijzing_hoofdrapportage text,
  verwijzing_overige_rapportages text,
  onderzoeksgebied polygon,
  CONSTRAINT "Serie_pkey" PRIMARY KEY (serie_nr)
)

存档表:

CREATE TABLE "Terra_nub_v1".serie_history
(
  uuid uuid NOT NULL,
  serie_nr integer NOT NULL,
  aantal_slijpplaten integer,
  producent text,
  locatie text,
  klaar boolean,
  onderzocht boolean,
  gerapporteerd boolean,
  opmerking text,
  verwijzing_hoofdrapportage text,
  verwijzing_overige_rapportages text,
  onderzoeksgebied polygon,
  datumtijd_wijziging timestamp without time zone,
  aangepast_door text,
  CONSTRAINT serie_history_pkey PRIMARY KEY (serie_nr)
)

我以这种方式制作触发器功能:

CREATE OR REPLACE FUNCTION "Terra_nub_v1".serie_history_trigger()
  RETURNS trigger AS $BODY$
  BEGIN
  IF (TG_OP ='UPDATE') THEN
    INSERT INTO Terra_nub_v1.serie_history SELECT OLD.*,NOW(), USER ; 
    RETURN OLD; 
  ELSEIF (TG_OP = 'DELETE') THEN
    INSERT INTO Terra_nub_v1.serie_history SELECT OLD.*,NOW(), USER ; 
    RETURN OLD; 
  END IF;
  RETURN NULL; 
END;
$BODY$ LANGUAGE plpgsql VOLATILE;

Create Trigger serie_history_trigger
BEFORE UPDATE OR DELETE ON Terra_nub_v1.serie
    FOR EACH ROW EXECUTE PROCEDURE process_emp_audit();

我正在使用postgres

问候

0 个答案:

没有答案