powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / триггер AFTER INSERT
10 сообщений из 10, страница 1 из 1
триггер AFTER INSERT
    #32313614
dmitry_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ситуация такова что в триггере срабатывающем AFTER INSERT on T1 ... выполняется другая вставка INSERT into T2 ...
но это не работает, выдается ошибка типа - pq_recvbuf: recv() failed: Connection reset by peer.
в чем проблема подскажите.

З.Ы.
AFTER DELETE on T1 ... все работает нормально.
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32315233
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А поподробнее?

версия?

тексты?


_______
(я тут смотрю как работает рекурсия при помощи триггеров. Так вроде на моделях вполне получается:
например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE OR REPLACE FUNCTION public.tr_first_delete()
  RETURNS trigger AS
'
DECLARE
 oid int4; 
 opid int4; 
 ova int8;
BEGIN
 SELECT INTO oid OLD.id;
 SELECT INTO opid OLD.pid; 
 SELECT into ova OLD.val;
 UPDATE first SET val = val-ova
 WHERE id=opid;

RETURN NEW;
END;'
  LANGUAGE 'plpgsql' VOLATILE;

Код: plaintext
1.
2.
3.
4.
5.
CREATE TRIGGER first_delete
  AFTER DELETE
  ON public.first
  FOR EACH ROW
  EXECUTE PROCEDURE public.tr_first_delete();

на ADD и UPDATE - подобная бяка. РАботает. Пробегает по всей иерархии. Но тут у меня нет попыток вообще зациклить. С другой стороны если есть проблемы, хотелось бы их нащупать еще на стадии моделей. (т.е. до выбора конкретных способов реализации). А вдруг блокировки как-то могут повлиять?
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32315927
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а на T2 случайно нет тригера на insert into T1???
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32317351
dmitry_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет конечно
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32317378
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а есть ли вообще какие нибудь 1.триггеры на инсерт и апдейт (в т.ч. вторичнные ключи) 2.правила в T2. Если есть - попробуй разрулить :0).

А показать текст(ы) - слабо?
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32318627
dmitry_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверное стоит уточнить.
1) есть перловый скрип, который вызывает первичный инзерт
2) самый простой вариант
CREATE FUNCTION ins_log() RETURNS OPAQUE AS '
DECLARE
tstamp VARCHAR := timenow();
tuser VARCHAR := session_user;
BEGIN
RAISE NOTICE ''DEVELOPER :: ins_log'',tstamp;
RAISE NOTICE ''user login = '',tuser;
insert into test (name) values (''test'');
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER ins_log AFTER INSERT ON log
FOR EACH ROW EXECUTE PROCEDURE ins_log();

ну вот это и виснет
пробовал из оболочки (psql ...) вызывать первый инзерт, ошибка появляется реже, но было.
Оно конечно может быть косяк в Perl::DBI, но вдруг и Postgresql?
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32318981
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторил ваш тригер (приблизительно).
__
CREATE OR REPLACE FUNCTION public.ins_log()
RETURNS trigger AS
'
DECLARE
tstamp VARCHAR := timenow();
tuser VARCHAR := session_user;
BEGIN
RAISE NOTICE \'DEVELOPER :: ins_log\',tstamp;
RAISE NOTICE \'user login = \',tuser;
insert into vbtest (id,name) values ((SELECT 1+max(id) FROM vbtest),\'test\');
RETURN NEW;
END;
'
LANGUAGE 'plpgsql' VOLATILE;
__
Вставлял данные из оболочки PgAdmin. Проблем не возникло. :(
Что не так?
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32320629
dmitry_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все спасибо , разобрался. косяк был в linux, а не постгресе или перле.
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32320738
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не за что (заодно полюбопытствовал)

если я прально вас понял, там надоть че-нить типа:
ins_log %'',tstamp;
...
Рейтинг: 0 / 0
триггер AFTER INSERT
    #32320740
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в "RAISE NOTICE", т.е.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / триггер AFTER INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]