Thread: Trigger set to backup to other table NOT FUNCTIONING...

Trigger set to backup to other table NOT FUNCTIONING...

From
Joepie Platteau
Date:
Hi,
I have a problem with my trigger... :

my tables :

CREATE TABLE public."T-Alumni" (
"Id_Persoon" int8 DEFAULT nextval('"T-Alumni_Id_Persoon_seq"'::text) NOT
NULL,
"SteunendLid" bool,
"Betaald" bool,
"Stamnr" int4,
"Alumninr" int4,
"Acjaar" varchar(50),
"Studiejaar" varchar(50),
CONSTRAINT "T-Alumni_pkey" PRIMARY KEY ("Id_Persoon")
) WITH OIDS;

CREATE TABLE public."T-Alumni-backup" (
"Id_Persoon" int8 NOT NULL,
"SteunendLid" bool,
"Betaald" bool,
"Stamnr" int4,
"Alumninr" int4,
"Acjaar" varchar(50),
"Studiejaar" varchar(50)
) WITH OIDS;

i have a table (T-Alumni) and BEFORE a record changes or is being
deleted, I want to copy this record to a UNDO_table (T-Alumni-backup).

I tried like this :

CREATE FUNCTION public.f100() RETURNS trigger AS '
BEGIN
INSERT INTO "T-Alumni-backup" VALUES (NEW.Id_Persoon, NEW.SteunendLid,
NEW.Betaald, NEW.Stamnr, NEW.Alumninr, NEW.Acjaar, NEW.Studiejaar);
RETURN NEW;
END;
' LANGUAGE 'plpgsql' VOLATILE;

CREATE TRIGGER t100t BEFORE DELETE OR UPDATE ON public."T-Alumni" FOR
EACH ROW EXECUTE PROCEDURE f100();

I get this error :
Record "new" has no field "id_persoon" (#7)

Also I want to have the name of the person who deleted or changed the
record in my BackUp (undo) table...

Can someone tell me how to solve this problem?
Thanx!
Joepie.


Re: Trigger set to backup to other table NOT FUNCTIONING...

From
Oliver Elphick
Date:
On Mon, 2004-09-13 at 11:05, Joepie Platteau wrote:
> Hi,
> I have a problem with my trigger... :
>
> my tables :
>
> CREATE TABLE public."T-Alumni" (
> "Id_Persoon" int8 DEFAULT nextval('"T-Alumni_Id_Persoon_seq"'::text) NOT
  ^^^^^^^^^^^^
> NULL,
...
> CREATE FUNCTION public.f100() RETURNS trigger AS '
> BEGIN
> INSERT INTO "T-Alumni-backup" VALUES (NEW.Id_Persoon, NEW.SteunendLid,
                                            ^^^^^^^^^^
...
>
> I get this error :
> Record "new" has no field "id_persoon" (#7)

You created it with the column names double quoted so they are really
mixed case.  However, you are accessing it without the double quotes, so
that the name is folded to lower case.  Therefore the names don't match.

> Also I want to have the name of the person who deleted or changed the
> record in my BackUp (undo) table...

CURRENT_USER will give you the user id; if that's what you mean.

--
Oliver Elphick                                          olly@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
GPG: 1024D/A54310EA  92C8 39E7 280E 3631 3F0E  1EC0 5664 7A2F A543 10EA
                 ========================================
     "But without faith it is impossible to please him; for
      he that cometh to God must believe that he is, and
      that he is a rewarder of them that diligently seek
      him."        Hebrews 11:6


Re: Trigger set to backup to other table NOT FUNCTIONING...

From
Joepie Platteau
Date:
Thank you very much!!!
Indeed this was the problem...

If I 'd once see you in a pub, I'd buy you a drink!!
Joepie.

Oliver Elphick wrote:
On Mon, 2004-09-13 at 11:05, Joepie Platteau wrote: 
Hi,
I have a problem with my trigger... :

my tables :

CREATE TABLE public."T-Alumni" (
"Id_Persoon" int8 DEFAULT nextval('"T-Alumni_Id_Persoon_seq"'::text) NOT    
  ^^^^^^^^^^^^ 
NULL,   
... 
CREATE FUNCTION public.f100() RETURNS trigger AS '
BEGIN
INSERT INTO "T-Alumni-backup" VALUES (NEW.Id_Persoon, NEW.SteunendLid,   
                                            ^^^^^^^^^^
... 
I get this error :
Record "new" has no field "id_persoon" (#7)   
You created it with the column names double quoted so they are really
mixed case.  However, you are accessing it without the double quotes, so
that the name is folded to lower case.  Therefore the names don't match.
 
Also I want to have the name of the person who deleted or changed the 
record in my BackUp (undo) table...   
CURRENT_USER will give you the user id; if that's what you mean.