ตัวอย่างTriggerเพื่อInsertข้อมูลจากตาราง tmp ไปยังตารางในMS SQLที่ต้องการ
ตัวอย่างนี้จะเก็บข้อมูลจากSCADAไปไว้ในMS SQL Serverผ่านตารางพักข้อมูลชื่อtmpในMS SQL เมื่อมีการเขียนค่าลงในฟิลด์ของตารางนี้ก็จะทำให้Triggerทำงาน ซึ่งTriggerนี้มัหน้าที่เอาข้อมูลที่เขียนไว้ในตารางtmpไปใส่ในตารางที่เราต้องการ
Trigger
CREATE Trigger [dbo].[ตั้งชื่อTriggerที่นี่] ON [dbo].[tmp] for UPDATE AS SET NOCOUNT ON DECLARE @exc int IF UPDATE(exc) BEGIN set @exc = (select exc from inserted) if @exc=1 BEGIN INSERT INTO dbo.[ชื่อตารางเป้าหมายที่จะเก็บข้อมูล] (time_date, v1, v2, v3, v4, v5) SELECT getdate(), v1,v2,v3,v4,v5 from INSERTED; UPDATE tmp set exc = 0; END END GO
ตัวอย่างตารางเป้าหมาย
สร้างตารางเป้าหมายที่จะเก็บข้อมูลโดยให้มีคอลัมน์ time_dateเพื่อเก็บ่าTime stamp และคอลัมน์ที่จะเก็บข้อมูลเช่น v1, v2, … (ตั้งชื่อตามต้องการ)
ตัวอย่างตารางtmp
ให้สร้างตารางtmpที่ใช้เพื่อพักข้อมูลไว้ในDatabaseเดียวกับตารางเป้าหมายที่จะเก็บข้อมูล จากนั้นใช้Codeข้างบนสร้างTriggerเข้าไปในตารางtmp อย่าลืมตั้งชื่อTriggerและระบุชื่อตารางเป้าหมาย ตลอดจนให้ตรวจสอบชื่อคอลัมน์ในโค้ดว่าตรงกับตารางเป้าหมายที่มีอยู่ เช่น ถ้าในตารางเป้าหมายเรามีคอลัมน์ time_date, temp, press, cnt1, cnt2, cnt3, lv1, lv2, lv3 แบบนี้เราก็ต้องแก้ไขโค้ดTriggerจากบรรทัด
INSERT INTO dbo.[tcsv2] (time_date, v1, v2, v3, v4, v5)
เป็น
INSERT INTO dbo.[tcsv2] (time_date, temp, press, cnt1, cnt2, cnt3, lv1, lv2, lv3 )
และเราต้องสร้างคอลัมน์ในตารางtmpให้รองรับ8ข้อมูลเป็น v1, v2, …, v8 คอลัมน์สั่งการ exc และคอลัมน์ id แล้วปรับโค้ดTriggerจากบรรทัด
SELECT getdate(), v1,v2,v3,v4,v5 from INSERTED;
เป็น
SELECT getdate(), v1,v2,v3,v4,v5,v6,v7,v8 from INSERTED;
หลังจากรันคำสั่งสร้างTriggerแล้วก็จะสามารถป้อนข้อมูลที่ต้องการเก็บไปไว้ในตารางtmpได้เลย โดยให้มีข้อมูลแค่แถวเดียว (ถ้าต้องการป้อนข้อมูลใหม่ก็ป้อนทับในแถวนั้นเลย) ส่วนคอลัมน์idมีไว้เพื่อประโยชน์ในการค้นและอ้างถึงข้อมูลในแถวนั้น
การใช้งาน
เมื่อป้อนค่าในคอลัมน์ข้อมูลเสร็จ ให้สั่งข้อมูลคอลัมน์ excเป็น1 จะทำให้ Triggerมีการทำงานนำข้อมูลไปไว้ในตารางเป้าหมาย หลังเสร็จงานข้อมูลในคอลัมน์excจะกลับเป็น0อัตโนมัติ
ตัวอย่างไฟล์ในบทความนี้
กรณีใช้DataWorXเป็นOPC DataLoggerเก็บข้อมูลOPCอัตโนมัติ
บทความที่เกี่ยวข้อง