From: | Bill <pg(at)dbginc(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | PgSQL General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Trigger function is not called |
Date: | 2008-08-26 02:53:53 |
Message-ID: | 48B37041.9020908@dbginc.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Tom Lane wrote:
> Bill <pg(at)dbginc(dot)com> writes:
>
>> I removed the domain from the category_id and version columns leaving
>> the following table, trigger function and trigger. The trigger function
>> is still not called when I insert a new row. Any other ideas?
>>
>
> You're still expecting the trigger to get invoked before any constraints
> are enforced (the NOT NULLs being the problem here, I think). Again,
> you can enforce things through a trigger or through a table constraint,
> but mixing and matching won't work too well.
>
> regards, tom lane
>
>
>
The thing that has me confused is that the following table, trigger and
trigger function work perfectly and the primary key for this table is
also bigint not null. I added a bigint not null domain to this schema
and changed the data type of the key to the domain and then I get the
constraint violation. I changed the type of the key column back to
bigint not null and the trigger fires and no error occurs.
Bill
CREATE TABLE test.trigger_test
(
"key" bigint NOT NULL,
data character varying(16),
CONSTRAINT trigger_test_key PRIMARY KEY (key)
)
CREATE OR REPLACE FUNCTION test.trigger_test_before_insert()
RETURNS trigger AS
$BODY$
begin
raise notice '*****Test before insert*****';
new."key" := nextval('test.id_seq');
return new;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
CREATE TRIGGER trigger_test_insert
BEFORE INSERT
ON test.trigger_test
FOR EACH ROW
EXECUTE PROCEDURE test.trigger_test_before_insert();
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2008-08-26 03:04:03 | Re: Trigger function is not called |
Previous Message | Tom Lane | 2008-08-26 02:41:40 | Re: Trigger function is not called |