Учитывая ....
CREATE PROCEDURE NotaRandomUpdate (@table1_id INT, @new_value INT)
AS
BEGIN
begin transaction
UPDATE Table1
SET field1 = @new_value
WHERE id = @table1_id
INSERT INTO Table2 VALUE(@new_value)
end transaction
END
В вышеупомянутой (очень) упрощенной ситуации, если есть 2 отдельных триггера, по одному на каждую из таблиц Table1 и Table2, какой триггер будет выполнен 1st?
Я хочу взять объединенный результат полной транзакции (с информацией, на которую нет ссылки в самой транзакции), и сохранить этот объединенный результат где угодно - поэтому мне нужно вывести данные из объединения Table1 => Table2.
Если Table1-Trigger выполняется 1-ым, то я столкнулся с отсутствием данных (в этом случае) из Table2.Если Table2-Trigger выполняется 1-й, то я сталкиваюсь с отсутствием необходимых данных (в этом случае) из Table1.
Я предполагаю, что триггеры выполняются только во время / после фазы фиксации .... или онивыполняется немедленно после выполнения инструкций Table1-update и Table-insert, и, таким образом, все обновления базы данных заключаются в полную транзакцию?
Это должно произойти в базе данных DB2.
решение возможно?Или я столкнулся с выполнением действия «некоторое время спустя» (например, pre-EOD), которое выполняет запрос, который объединяет 2 таблицы после завершения всех соответствующих обновлений (для этого дня), при условии, конечно, что каждая из таблиц Table1 и Table2есть столбцы меток времени, которые можно отслеживать.
end