1. 程式人生 > >Flume抽取SQL Server設計方案具體實現(二)觸發器

Flume抽取SQL Server設計方案具體實現(二)觸發器

上一篇將瞭如何使用Flume收集SQL server Board中的新增資料進行處理,如下針對更新的資料進行分析

需求:對Board表更新的資料進行處理

1.建立一個存更新資料的表Tri_Board_Update,表結構基本和原表機構一樣,但需要新增Update_id(唯一標識列),TriggerTime(觸發時間)方便後續Flume的資料收集

CREATE TABLE [dbo].[Tri_Board_Update](
    [Update_id] varchar(500) UNIQUE,
[cModel] [varchar](30) NOT NULL,
[BoardSN] [varchar](100) NOT NULL,
[TopBtm] [varchar](10) NOT NULL,
[imulti] [varchar](20) NOT NULL,
[TriggerTime] [datetime] not NULL
 CONSTRAINT [PK_Board_Update] PRIMARY KEY CLUSTERED 
(   [Update_id] ASC,
[BoardSN] ASC
)

) ON [PRIMARY]

2.為Board表建立觸發器:

CREATE TRIGGER TriBoard_update ON dbo.Board FOR UPDATE 
AS  
DECLARE @Update_id AS uniqueidentifier     
SET @Update_id= NEWID()  
INSERT INTO dbo.Tri_Board_Update
select @Update_id AS Update_id,A.*, GETDATE()as TriggerTime

FROM inserted A

注意:在建立更新觸發器時,首先觸發器會將原始資料存到deleted的臨時表中,更新的資料存在一個inserted的臨時表中,當觸發器完成後,這兩表自動銷燬。所有想得到更新後的資料,肯定需要從inserted中獲取。

3.測試

在board表中更新一條資料,檢視Tri_Board_Update中是否存在此資料。測試結果,Tri_Board_Update中有存在更新後的資料。