觸發器 通用(insert,update,delete)

 

  1. set ANSI_NULLS ON 
  2. set QUOTED_IDENTIFIER ON 
  3. go 
  4.  
  5.  
  6. ALTER TRIGGER [dbo].[incrementalUpdate] ON [dbo].[t_stock]  
  7. for insert,update,delete 
  8. as 
  9. --插入操作 
  10. if not exists(select 0 from deleted) 
  11. begin 
  12. insert into dw_lyg.dbo.f_stock  select * from inserted 
  13. end 
  14.  
  15. --刪除操作 
  16. else if not exists(select 0 from inserted) 
  17. begin 
  18. --0代表刪除操作,1代表更新操作 
  19. --由於刪除操作比較危險,所以我們先將要刪除的數據記錄到數據倉庫裏的備份表,再將其刪除 
  20. insert into dw_lyg.dbo.f_stock_operation_log select *,0 from deleted 
  21.  
  22. --執行刪除操作 
  23. delete dw_lyg.dbo.f_stock from dw_lyg.dbo.f_stock s right join deleted d on 
  24. s.col1 =d.m_col1 and s.col2=d.col2;
  25. --警告:這裏的col1和col2必須是表s的聯合主鍵,不然你刪除了多條記錄,別怪我沒提醒你。
  26. end 
  27.  
  28. --更新操作 
  29. else  
  30. begin 
  31. --0代表刪除操作,1代表更新操作  
  32. --由於更新操作也比較危險,所以我們先將要更新的數據記錄到數據倉庫的備份表,再執行更新操作 
  33. insert into dw_lyg.dbo.f_stock_operation_log  select *,1 from deleted 
  34. --執行更新操作 
  35. update dw_lyg.dbo.f_stock set col3=i.col3,col4=i.col4  
  36. from dw_lyg.dbo.f_stock s right join inserted i on 
  37. (s.col1=i.col1 and s.col2=i.col2 );
  38. --警告:原因同上。 
  39. end 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章