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中有存在更新後的資料。