2014-10-16 8 views
0

Мне было поручено перенести ASA в базу данных MSSQL, но я не знаком с триггером MSSQL, может ли кто-то преобразовать это в MSSQL-триггер?convert sybase trigger to mssql trigger

COMMENT TO PRESERVE FORMAT ON TRIGGER "DBA"."BATCH_DEDUCTIONS"."deductions_update" IS 
{create TRIGGER deductions_update AFTER UPDATE OF "FACTOR", "RATE" 
ORDER 1 ON "DBA"."BATCH_DEDUCTIONS" 
REFERENCING OLD AS old_row NEW AS new_row 
FOR EACH ROW /* WHEN(search_condition) */ 
BEGIN 
    /* Type the trigger statements here */ 
    declare trfactor numeric(12,6); 
    declare trrate numeric(12,6); 
    declare tramount numeric(12,2); 
    set trfactor = new_row.factor; 
    set trrate = new_row.rate; 
    set tramount = trfactor * trrate; 
    update "dba"."batch_deductions" set amount = tramount 
     where batchno = new_row.batchno and empid = new_row.empid and item_no = new_row.item_no 
       and itemcode = new_row.itemcode 
END 
} 
go 
+0

Покажите свою попытку. Где вы застряли. –

+0

lolz; Я закончил: – popoyjin

ответ

0

--Пожалуйста увидеть ниже код --Hope он может помочь вам .. ; ..

ALTER TRIGGER [DBO] [deductions_update] ON [DBO] [BATCH_DEDUCTIONS] ПОСЛЕ UPDATE КАК НАЧАТЬ - SET NOCOUNT ON добавляется для предотвращения дополнительных наборов результатов из - мешая ЗЕЬЕСТ. SET NOCOUNT ON;

declare @tramount numeric(12,2); 

select @tramount = (new_row.factor * new_row.rate) from inserted new_row 

IF (UPDATE(factor) OR UPDATE(rate)) 
BEGIN 
    update batch_deductions set amount = @tramount 
    from batch_deductions, inserted new_row 
    where batch_deductions.batchno = new_row.batchno and batch_deductions.empid = new_row.empid and batch_deductions.item_no = new_row.item_no 
      and batch_deductions.itemcode = new_row.itemcode 
END 

-- Insert statements for trigger here 

END

GO

+0

Пожалуйста, отправляйте фрагмент кода, также объясняя, что он на самом деле делает. Это лучше, чем просто надеяться, что это поможет. – embert