MS SQL Insert Trigger

ตัวอย่างTriggerเพื่อInsertข้อมูลจากตาราง tmp ไปยังตารางในMS SQLที่ต้องการ

ชมเวอร์ชั่นVDO

ตัวอย่างนี้จะเก็บข้อมูลจาก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

ตัวอย่างตารางเป้าหมาย

image

สร้างตารางเป้าหมายที่จะเก็บข้อมูลโดยให้มีคอลัมน์ time_dateเพื่อเก็บ่าTime stamp และคอลัมน์ที่จะเก็บข้อมูลเช่น v1, v2, … (ตั้งชื่อตามต้องการ)

ตัวอย่างตารางtmp

image

ให้สร้างตาราง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อัตโนมัติ

ตัวอย่างไฟล์ในบทความนี้

ชมเวอร์ชั่นVDO

 

บทความที่เกี่ยวข้อง

การใช้งานที่คล้ายกันในMy SQL และตัวอย่างป้อนค่าผ่านSCADA

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s