Search Postgresql Archives

Re: Immutable attributes?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi for all ,  plese a question ,this function can be write in pl/pgsql ??????? 

thank for all 

2005/4/24, Stephane Bortzmeyer <bortzmeyer@xxxxxx>:
> To protect the database from programming errors (there is a team
> working on the project and some beginners may produce bugs), I would
> like to flag some attributes as immutable, meaning non modifiable in
> an UPDATE. (Typical examples are ID or creation time.)
> 
> Currently, I use triggers:
> 
> CREATE OR REPLACE FUNCTION check_immutable() RETURNS TRIGGER
>     AS 'BEGIN
>               IF NEW.id != OLD.id OR NEW.created != OLD.created THEN
>                    RAISE EXCEPTION ''Change not allowed in that table'';
>               END IF;
>               RETURN NEW;
>         END;'
>     LANGUAGE PLPGSQL;
> 
> CREATE TRIGGER check_immutable
>    BEFORE UPDATE ON MyTable
>    FOR EACH ROW
>    EXECUTE PROCEDURE check_immutable();
> 
> It is quite painful, since I need a function (with the list of
> immutable attributes) and a trigger per table. If I INHERITS from a
> table, triggers on the parent table are not called if I update the
> child table.
> 
> Is there a better way? I do not find a constraint IMMUTABLE for
> attributes.
> 
> PostgreSQL 7.4, switching to 8.0 would be difficult.
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@xxxxxxxxxxxxxx
> 


-- 
cordialmente,

Ing. Mario Soto Cordones

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux