SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Заморочки с триггерами
Заморочки с триггерами [сообщение #5831] Wed, 18 December 2024 12:27 Переход к следующему сообщению
DaniilGray в настоящее время не в онлайне  DaniilGray
Сообщений: 19
Зарегистрирован: October 2024
Junior Member
Сейчас в таблице одной транзакцией обновляются два столбца (1й и 2й).
Есть триггер, отслеживающий изменение одного (1й) из них и запускающий обновление ещё двух столбцов (3й и 4й), при 3й рассчитывается по 1му, а 4й по 2му.
Если создать два триггера, для 1го и 2го столбцов отдельно, то, по идее, получим две стартовавшие одновременно транзакции, одна из которых будет заполнять 31, а вторая - 4й столбцы.
А не потрёт ли выполнившаяся позже транзакция итоги завершившейся позже?

И могу ли я в теле триггера указать столбцы, после изменения которых он должен запускаться, через OR?
Типа так:

CREATE OR REPLACE TRIGGER check_update
   BEFORE UPDATE OF (balance or balance) ON accounts
   FOR EACH ROW
   EXECUTE FUNCTION check_account_update();

Или Хаос с этими триггерами и создать вычисляемые столбцы?
Re: Заморочки с триггерами [сообщение #5840 является ответом на сообщение #5831] Mon, 23 December 2024 22:28 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 369
Зарегистрирован: June 2022
Senior Member
Триггера вообще зло.
Делайте через хранимки что ли. Пусть они все в себе в одной транзакции правят.
Re: Заморочки с триггерами [сообщение #5848 является ответом на сообщение #5840] Fri, 10 January 2025 18:15 Переход к предыдущему сообщению
DarkMaster в настоящее время не в онлайне  DarkMaster
Сообщений: 37
Зарегистрирован: August 2022
Member
А разве все триггера (вся цепочка триггеров) не срабатывают последовательно в одной транзакции?
Предыдущая тема: Опциональное условие в WHERE
Переход к форуму:
  


Текущее время: Sat Jan 18 01:52:53 GMT+3 2025

Общее время, затраченное на создание страницы: 0.00981 секунд