Tom Lane wrote:
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 <pg@xxxxxxxxxx> 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 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(); |