powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / пятничный псто о порядке "событий" записей стейтмента
6 сообщений из 31, страница 2 из 2
пятничный псто о порядке "событий" записей стейтмента
    #38987870
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Том Лэйн всё http://www.postgresql.org/message-id/3443.1434636106@sss.pgh.pa.us]расставил по местам.

Я, пока в теме, нарисовал картинку как всё происходит и добавил пару слов.
Чисто, чтобы потом не вспоминать.
...
Рейтинг: 0 / 0
пятничный псто о порядке "событий" записей стейтмента
    #38988345
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЛузановТом Лэйн всё http://www.postgresql.org/message-id/3443.1434636106@sss.pgh.pa.us]расставил по местам.он объяснил, почему "она утонула".

но не то -- действительно ли такое поведение ("она тонет") - "правильно".

т.е. это не "расставил по местам".
это "описал причину текущего поведения".
это немного не тот ответ.

вправе ли пользователь, например такой, как разработчик системы триггерного реплицирования, ожидать иного поведения во всех случаях -- вопрос открытый.
Но понятно-- что от пж -- не приходится. По крайней мере -- пока.

на сём -- соль ответа: -- можно пользоваться вашими диаграммами, для предсказания порядка срабатывания афтер--обработчиков при наличии "instead" триггеров [и приравненых]. А к системам триггерной репликации впредь подходить осторожно, а не как к гарантированным универсалиям. И работать с ними только разрешенными методами.
...
Рейтинг: 0 / 0
пятничный псто о порядке "событий" записей стейтмента
    #38988547
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я там посмотрел внутрь кода вызова триггеров, есть конечно замечания.
например! : меня щас интересует, почему я не могу на delete триггере old подменять.

они игнорят "ретурн" old
http://doxygen.postgresql.org/trigger_8c.html#acbfcf94c1d188020ff1fcfc9280b0600
сравните с update
http://doxygen.postgresql.org/trigger_8c.html#a4daa91dfefe19f48d2c7b947f9ca83ef
и как они new прокидывают там.

это мне мешает сделать наследование единообразно (не миксуя рулы с триггерами, и можно было бы всё на этот микс списать) через триггера, при этом не проиграть фактически в размере на хранение.

вот была идея -- но хрен пока.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create or replace function tmp.test_trg_inh_func() returns trigger language 'plpgsql' as
$$
declare
  _new tmp.test_trg;
  _old tmp.test_trg;
begin 

  if ( TG_OP = 'INSERT' ) then
    insert into tmp.test_trg select NEW.*;
    _new.id := NEW.id;                                                       -- храним в родителе только id             
    return _new;                             
  elsif ( TG_OP = 'DELETE' ) then  
    delete from tmp.test_trg t where t.id = OLD.id returning t.* into _old;  -- делит возвращаем из ребенка
    raise notice '(%) (%)', _old, OLD;
    return _old;
  else
    raise '-';
  end if;

end;
$$;


буду еще писать.
...
Рейтинг: 0 / 0
пятничный псто о порядке "событий" записей стейтмента
    #38988922
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЛузановТом Лэйн всё http://www.postgresql.org/message-id/3443.1434636106@sss.pgh.pa.us]расставил по местам.
ещё раз прочитал нагрёбнутые в кучку аглицкие словеса -- в общем херню он пишет.
"спросите тома, и ваши уши покроются толстым слоем лапши".

он оперирует неопределенным понятием "завершение стейтмента" -- что это такое - никто не знает. предположу, что завершение [в т. ч. обработчиков, если есть] события before последнего row в стейтменте.
тогда прямой вывод -- данная херня есть быть происходить оттого, что разрабцы поленились сообразить, что cte не стейтмент, а мультистейтмент. вернитесь к абстракции стейтмент мультистейтмента -- и всё вернётся на место -- сначала "завершится" (!хехе) последний before sub-DELETE cte -- потом -- пойдут все события after его же - потом before инсерта, внутри которых after для рядков в триггере, потом ... ну, вы поняли. ага. Т.е. какая-то минимальная стройность восстановится. (но есть и там проблемы, кажется, ну да хер с ними).
...
Рейтинг: 0 / 0
пятничный псто о порядке "событий" записей стейтмента
    #38988930
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нда, надо разбираться с cte
...
Рейтинг: 0 / 0
пятничный псто о порядке "событий" записей стейтмента
    #38989396
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это от того что никто не предполагал в те времена хаков с удалением в cte.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / пятничный псто о порядке "событий" записей стейтмента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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