Разобраться с триггером

  • Автор темы CrazyHacKeRs
  • Дата начала

CrazyHacKeRs

Guest
Разобраться с триггером

Помогите разобраться!
Пытаюсь сделать триггер, который при внесении записии в одну таблицу - делает проводку в другой. При этом во вторую должно вставляется только ID добавленной записии (serial).
Написал функцию, триггер - но если явно не указываю ID - выдается ошибка:
cannot EXECUTE NULL query
Помогите примерами...




Я так понимаю он не может передать ID новой записии
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Код триггера покажи, что ли...
 

CrazyHacKeRs

Guest
сам триггер:
PHP:
CREATE FUNCTION srv_item2vals () RETURNS opaque AS 'DECLARE
   new_val VARCHAR; 
BEGIN


new_val:=

''INSERT INTO wt_val_'' 
|| NEW.category  
|| '' (tid) VALUES ('' 
|| quote_ident(NEW.item_id)  
||  '')'';


EXECUTE new_val;

RETURN NEW;


END;
' LANGUAGE 'plpgsql';
кажется нашел ошибку, просмотрел только что дамп - вместо serial указал просто INT :) ща попробую исправиь и проверить, может заработает...

триггер лучше поставить на AFTER INSERT или BEFORE ?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: CrazyHacKeRs
сам триггер:
Код:
''INSERT INTO wt_val_'' 
|| NEW.category  
|| '' (tid) VALUES ('' 
|| quote_ident(NEW.item_id)  
||  '')'';
Так, смотри, если у тебя NEW.category IS NULL, то и весь запрос будет NULL (т.к. ('любая строка' || NULL) IS NULL). Отсюда и соответствующее сообщение.

триггер лучше поставить на AFTER INSERT или BEFORE ?
На AFTER. На BEFORE имеет смысл ставить триггеры, если они проверяют вставляемые значения и/или как-нибудь их меняют.
 

CrazyHacKeRs

Guest
А вставиться ли запись в первую таблицу если не отработает триггер?
 

Sasha_KA

Guest
Re: Разобраться с триггером

немайся сделай все из программы, при большой нагрузки все просто остановится ...

ЗЫ: подумай как бы потом все переписывать не пришлось ..

ЗЫ: есть postgres admin тот который под винды там есть набот тригеров, оч интересно глянуть, советую ..
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: Re: Разобраться с триггером

Автор оригинала: CrazyHacKeRs
А вставиться ли запись в первую таблицу если не отработает триггер?
Эээ... не отработает = отвалится по ошибке? Тогда ничего не вставится и откатится вся транзакция. :D


Автор оригинала: Sasha_KA
немайся сделай все из программы, при большой нагрузки все просто остановится ...

ЗЫ: подумай как бы потом все переписывать не пришлось ..

ЗЫ: есть postgres admin тот который под винды там есть набот тригеров, оч интересно глянуть, советую ..
Триггер в общем случае отработает быстрее, чем то же самое действие, сделанное в программе.
А что такое "набот"?
 

Sasha_KA

Guest
Re: Re: Re: Разобраться с триггером

Originally posted by Sad Spirit

Эээ... не отработает = отвалится по ошибке? Тогда ничего не вставится и откатится вся транзакция. :D



Триггер в общем случае отработает быстрее, чем то же самое действие, сделанное в программе.
А что такое "набот"?
угу при количестве процессов больше 512 :(

тогда лучше программой, чисто по опыту знаю
 
Сверху