plpgsql - Inserting DEFAULT Value. - Mailing list pgsql-general

From Vams
Subject plpgsql - Inserting DEFAULT Value.
Date
Msg-id 200406152129.29351.vmudrageda@charter.net
Whole thread Raw
Responses Re: plpgsql - Inserting DEFAULT Value.  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
Hi all,

I need to protect a SERIAL column from having a value inserted into it (other
than the default sequence) and keep that value from being tampered with.  So
I created a function which is called by a trigger.  Unfortunately, I don't
know how to assign DEFAULT to the id column.  Can anyone tell me how I can
fix my function or is there another easier way that doesn't need triggers or
functions?  Here is what I got so far.

CREATE OR REPLACE FUNCTION id_protect()
RETURNS TRIGGER AS '
        BEGIN
                IF TG_OP = ''INSERT'' THEN
                        NEW.id := DEFAULT;   -- here is the problem :(
                        RETURN NEW;
                ELSIF TG_OP = ''UPDATE'' THEN
                        NEW.id := OLD.id;
                        RETURN NEW;
                ELSE
                        RETURN NEW;
                END IF;
        END;
' LANGUAGE PLPGSQL;

Important point:  I need this to be a generic function.  I got multiple tables
that have a id column, each with their own unique sequences, and I want to
use the same function for all of them.  So NEW.id := nextval('some_sequence')
can't work.

Thank you all,

Vams

pgsql-general by date:

Previous
From: "NTPT"
Date:
Subject: Vacuum, reindex, cluster, in propper order ?
Next
From: Tom Lane
Date:
Subject: Re: Postgresql installation.