From: | Etienne Rouxel <rouxel(dot)etienne(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Explicitly inserting NULL values into NOT NULL DEFAULT 0 columns |
Date: | 2012-10-02 16:01:34 |
Message-ID: | 1349193694874-5726334.post@n5.nabble.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi
I have the same "problem" as Tanmay Patel.
SELECT * FROM version();
returns :
"PostgreSQL 8.4.12 on i386-apple-darwin, compiled by GCC
i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5370),
32-bit"
Here is my simplified code :
CREATE TABLE public.mytable (
refno int NOT NULL DEFAULT 1
);
CREATE FUNCTION public.mytable_insert_refno() RETURNS trigger AS $BODY$
BEGIN
NEW.refno := 123;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql
VOLATILE;
CREATE TRIGGER mytable_insert_refno
BEFORE INSERT
ON public.mytable
FOR EACH ROW
EXECUTE PROCEDURE public.mytable_insert_refno();
INSERT INTO public.mytable (refno) VALUES (NULL) RETURNING *;
As we can see when running this code, the trigger prevent the NULL value to
reach the NOT NULL constraint check and a relation is successfully inserted
in the table with value 123.
I managed to realize this behavior when unit testing my database, the
question I am asking myself is : in which order are the constraints checked?
Is this order guarantee or not?
--
View this message in context: http://postgresql.1045698.n5.nabble.com/Explicitly-inserting-NULL-values-into-NOT-NULL-DEFAULT-0-columns-tp5012482p5726334.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.
From | Date | Subject | |
---|---|---|---|
Next Message | David Johnston | 2012-10-02 16:36:10 | Re: Re: Explicitly inserting NULL values into NOT NULL DEFAULT 0 columns |
Previous Message | Andrew Hannon | 2012-10-02 15:48:20 | Long-running query on replica not timing out |