- set ANSI_NULLS ON
- set QUOTED_IDENTIFIER ON
- go
- ALTER TRIGGER [dbo].[incrementalUpdate] ON [dbo].[t_stock]
- for insert,update,delete
- as
- --插入操作
- if not exists(select 0 from deleted)
- begin
- insert into dw_lyg.dbo.f_stock select * from inserted
- end
- --刪除操作
- else if not exists(select 0 from inserted)
- begin
- --0代表刪除操作,1代表更新操作
- --由於刪除操作比較危險,所以我們先將要刪除的數據記錄到數據倉庫裏的備份表,再將其刪除
- insert into dw_lyg.dbo.f_stock_operation_log select *,0 from deleted
- --執行刪除操作
- delete dw_lyg.dbo.f_stock from dw_lyg.dbo.f_stock s right join deleted d on
- s.col1 =d.m_col1 and s.col2=d.col2;
- --警告:這裏的col1和col2必須是表s的聯合主鍵,不然你刪除了多條記錄,別怪我沒提醒你。
- end
- --更新操作
- else
- begin
- --0代表刪除操作,1代表更新操作
- --由於更新操作也比較危險,所以我們先將要更新的數據記錄到數據倉庫的備份表,再執行更新操作
- insert into dw_lyg.dbo.f_stock_operation_log select *,1 from deleted
- --執行更新操作
- update dw_lyg.dbo.f_stock set col3=i.col3,col4=i.col4
- from dw_lyg.dbo.f_stock s right join inserted i on
- (s.col1=i.col1 and s.col2=i.col2 );
- --警告:原因同上。
- end