在我們的應用程序在數據庫級別,我有一個表架構計費和Billing_History中的分期付款。SQL插入/更新/刪除觸發效率
顯示的觸發器位於賬單模式的分期付款表中。
這樣做是每次在計費架構中插入/更新記錄時,它也會寫入歷史記錄文件中。
如果記錄從記帳表中被刪除,它將被寫入歷史記錄表,其中「已刪除」指示符= true。
我認爲,「如果不存在(從安裝選擇*)被殺死了我的表現,更多的記錄得到補充。
有沒有更effecient是寫這個觸發器?
Create TRIGGER [Billing].[Installments_InsertDeleteUpdate_History]
ON [Billing].[Installments]
AFTER INSERT, DELETE, UPDATE
AS BEGIN
Insert Into Billing_History.Installments
Select *, GetDate(), 0 From Inserted
If Not Exists (Select * From Inserted)
Insert Into Billing_History.Installments
Select *, GetDate(), 1 From Deleted
SET NOCOUNT ON;
-- Insert statements for trigger here
END
建議您爲正在使用的RDBMS添加標籤。 – Smandoli
'如果不存在(選擇*從插入)'不會損害您的性能,但您可以用'IF @@ ROWCOUNT> 0'檢查替換它以獲得相同的語義。 –
在插入中選擇*是非常糟糕的做法。 – HLGEM