Вот мой триггерMS SQL триггер вместо обновления ELSE можно выполнить оригинальный запрос?
Create TRIGGER [dbo].[tri_before_update]
ON [dbo].[test]
instead of update
AS
BEGIN
SET NOCOUNT ON;
if update (test_a)
begin
*.. my update & insert query*
end
END
create TRIGGER [dbo].[tri_before_update_price]
ON [dbo].[co_ticket]
instead of update
AS
BEGIN
SET NOCOUNT ON;
if update (t_price)
begin
insert into old_price_log (t_id,insert_time,process_id,old_t_price)
select i.t_id,getdate(),2,t_price
from Inserted i,co_ticket t where i.t_id = t.t_id
update t set t_price = i.t_price
from co_ticket t, inserted i
where t.t_id = i.t_id
end
else
begin
-- if update other then (t_price) then the update comand not execute.
-- example when i update t_cancel_flag or t_quantity and etc. end
END
Этот триггер выполнять отлично, когда я обновить на колонке «test_a». ОДНАКО, когда я обновляю, кроме столбца «test_a», он не будет выполняться. Я знаю, что могу поместить команду «else», но я получил много столбцов. иногда обновляет два других столбца, иногда три или четыре столбца. Я не хочу обновлять все столбцы каждый раз. Возможно ли, что ELSE «выполнил оригинальный запрос»? Я пробовал много по-другому, но до сих пор не могу работать. :(Пожалуйста, помогите
Вы определяете триггер «после», который условно сделает * только * вставку. Почему вы выбрали вместо этого триггер? –
, потому что мне нужно чтобы сохранить существующее значение «test_a» в журнале перед его обновлением. Есть ли лучший способ? – user2838258
Определить «Мне нужно сохранить существующее значение test_a» в журнале. Поместите точную структуру таблицы и точный T-SQL, который вы используйте вместе с примером использования. не описывайте проблему. –