Re: Trigger function is not called

Поиск
Список
Период
Сортировка
От Bill
Тема Re: Trigger function is not called
Дата
Msg-id 48B37041.9020908@dbginc.com
обсуждение исходный текст
Ответ на Re: Trigger function is not called  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Trigger function is not called  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Trigger function is not called  (Klint Gore <kgore4@une.edu.au>)
Список pgsql-general
Tom Lane wrote:
Bill <pg@dbginc.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();


В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Trigger function is not called
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Trigger function is not called