Как сработать триггер после окончания вставки данных в таблицу - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть table A, в который я вставляю данные. Затем выполняется какой-то расчет, обновляя тот же table A.

Я хочу запустить триггер, который вызывает Procedure A после завершения вставки данных (после вставки и обновления).

Как мне это сделать?

Есть ли другой способ сделать это автоматически ... Или мне нужно запустить Procedure A вручную после завершения вставки данных в table A.


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

Ответы [ 3 ]

4 голосов
/ 30 декабря 2011

Вы можете определить свой триггер, который будет запускаться для каждой строки или для каждого оператора (опция FOR EACH ROW).

Если я вас правильно понял, вы бы хотели нажать на курок после нескольких заявлений?Не думай, что сможешь.Даже если вы можете, я бы не стал этого делать.Они разбрасывают поток / логику вашей программы и затрудняют понимание того, как ваша программа работает позже.

С уважением

3 голосов
/ 30 декабря 2011

Если я правильно понимаю ваш вопрос, вы хотите, чтобы триггер сработал после завершения транзакции, состоящей из нескольких операторов вставки / обновления? Если это так, я думаю, вам следует рассмотреть возможность вызова вашего Procedure A в потоке программы сразу после выполнения операций вставки / обновления.

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

0 голосов
/ 05 июня 2014

Добавьте один столбец в вашу таблицу: например, "FINAL_ACTION". Оставьте эту колонку нетронутой до тех пор, пока вы не ожидаете окончательного решения. Тогда ваш триггер срабатывает только с этим условием:

REFERENCING NEW AS NEWREC OLD AS OLDREC
FOR EACH ROW
WHEN (NEWREC.FINAL_ACTION <> OLDREC.FINAL_ACTION)
DECLARE
     --YOUR DECLARATIONS
BEGIN
     --DO SOMETHING
END;
...