Будет ли триггер AFTER в Postgres блокировать вставку / обновление? - PullRequest
13 голосов
/ 29 июня 2010

Если я настрою триггер AFTER в PostgreSQL для запуска после вставки / обновления, придется ли вызывающему программному обеспечению ждать завершения триггера, прежде чем вернуть управление вызывающему программному обеспечению? Или триггер сработает сам за кулисами?

1 Ответ

14 голосов
/ 29 июня 2010

Да, потому что он выполняется в рамках одной транзакции. В случае сбоя триггера вставка / обновление также не удастся. Просто выполните тест, выполнив запрос, который не будет выполнен (ВЫБЕРИТЕ таблицу, которая не существует), и вы увидите, как все работает и как будет работать ваше приложение.

CREATE OR REPLACE FUNCTION foo() RETURNS TRIGGER
AS
$$
BEGIN
  EXECUTE 'SELECT fail';
END;
$$
LANGUAGE plpgsql;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...