Search Postgresql Archives

Re: setting default value by "trigger"

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

 



This works on 7.3.4:

CREATE TABLE foo (id SERIAL, starttime TIMESTAMP, endtime TIMESTAMP);

CREATE FUNCTION adjust_end_time() RETURNS "trigger" AS '
BEGIN
        IF NEW.endtime ISNULL THEN
            NEW.endtime := NEW.starttime;
        END IF;
        RETURN NEW;
END;'
LANGUAGE plpgsql;

CREATE TRIGGER foo_trigger
    BEFORE INSERT ON foo
    FOR EACH ROW
    EXECUTE PROCEDURE adjust_end_time ();

INSERT INTO foo(starttime, endtime) VALUES (now(), now());
INSERT INTO foo(starttime) VALUES (now());

SELECT * FROM foo;

On Monday February 9 2004 9:24, Barbara Lindsey wrote:
> I have a case where I am collecting a "Start Date" and an "End Date".
> I would like to default the "End Date" to the "Start Date" value if only
> the "Start Date" is entered.
> I tried setting this as default on the table, but it was not permitted.
> So, now I am trying to figure out how to do it with a trigger or
> trigger/function combination.
>
> I tried doing it with a rule using "INSTEAD" on INSERT, but that gave an
> "endless recursion" error, which did make ssense after I looked at it
> more closely.
>
> I also tried making a trigger, which called a function that changed the
> value of the NEW.enddate to the NEW.startdate value if NEW.enddate is
> NULL, but I got an error saying that the NEW. values were not available
> yet (doing trigger BEFORE INSERT).
>
> Has anyone else done something like this, and if so, what approach
> worked for you?
> Thanks.
> Barb


---------------------------(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