From: | lucas(at)presserv(dot)org |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Default on update |
Date: | 2005-11-23 13:56:26 |
Message-ID: | 20051123105626.fon1t82f0ctcgogw@www.presserv.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
> Quoting Richard Huxton <dev(at)archonet(dot)com>:
> lucas(at)presserv(dot)org wrote:
>> Hi.
>> Is there a way to create "default" constraint on UPDATE query.
>> It's becouse I have a bool field that may NOT support NULL value, but the
>> Front-End calls null for FALSE values.
>
> Sounds like your frontend is broken.
>
Yes, it is. But I have no access to the front-end. I will send it to the
programmer.
>> I was thinking something like:
>> create table table1 (
>> id serial primary key,
>> bv bool default false not null
>> );
>> I would want to replace "bv" values with FALSE when insert/update
>> NULL value for
>> this field.
>
> You could do this by having the application insert to a view with a
> rule that replaces null bv values before redirecting to the base
> table.
Is more functional to create a Rule instead of a trigger?
>
>> Or need I create a TRIGGER that check it and replace the itens???
>> CREATE or REPLACE function TG_table1_check RETURNS trigger as '
>> BEGIN
>> IF nullvalue(NEW.bv) THEN
>
> IF NEW.bv IS NULL THEN
>
What is the difference between nullvalue() and IS NULL???
>> NEW.bv=FALSE;
>> END IF;
>> END;
>> ' language 'plpgsql'; CREATE TRIGGER TG_table1_check BEFORE UPDATE
>> on table1 for
>> each row execute procedure tg_table1_check();
>
> To make the trigger work you'll have to relax the "NOT NULL" on
> column "bv" otherwise PG's type-checks will raise an error. Oh, and
> then make sure the trigger is called before INSERT too.
>
Okay.
>> Other question: I have a lot of triggers in my db system, I have
>> table that has
>> 5/6 triggers, many triggers are simple (like the tg_table1_check), any are
>> complex... Is it a problem??? My tests are with few regs and run fine. Where
>> can I read more about triggers and performance?
>
> Triggers behave exactly as you'd expect. For every row (or statement)
> the function gets executed. Difficult to say what effect they'll have
> on performance without testing with your actual setup.
>
Ok, I will test with more records.
Thank you.
From | Date | Subject | |
---|---|---|---|
Next Message | Fernando Garcia | 2005-11-23 14:07:22 | OUT OF THIS LIST...... |
Previous Message | Richard Huxton | 2005-11-23 12:22:59 | Re: Default on update |