ตัวอย่างTrigger เก็บข้อมูลจากตารางอื่นตามเงื่อนไข

ตัวอย่างนี้จะเก็บข้อมูลจากตารางProducts มาไว้ในตารางProducts_AWX เมื่อข้อมูลUnitsInStockน้อยกว่า 20 (สามารถเปลี่ยนแปลงเงื่อนไขตามต้องการ) แล้วแจ้งเตือนทางLINE

Trigger ตรวจสอบข้อมูลในตาราง Products เมื่อมีการInsert/Updateข้อมูลเข้ามา

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER chkPrd
   ON  dbo.Products
   AFTER INSERT,UPDATE
AS 

DECLARE @ProductID as int;
DECLARE @ProductName as nvarchar(50);
DECLARE @UnitsInStock as smallint;
DECLARE @Msg as nvarchar(max);
DECLARE @nProduct as int;


BEGIN

	SET NOCOUNT ON;

	SET @ProductID =(SELECT ProductID from Inserted)
	SET @ProductName =(SELECT ProductName from Inserted)
	SET @UnitsInStock =(SELECT UnitsInStock from Inserted)

	

	IF @UnitsInStock < 20 
	BEGIN

		SET @nProduct = (SELECT count([ProductID]) from Products_AWX2 WHERE ProductID = @ProductID)
		SET @Msg='Stock Low'

		IF @nProduct = 0 
		BEGIN
			INSERT INTO Products_AWX2 (ProductID, ProductName, UnitsInStock, Msg) VALUES (@ProductID,@ProductName,@UnitsInStock,@Msg)
		END
		ELSE
		BEGIN
			UPDATE Products_AWX2 SET UnitsInStock = @UnitsInStock, Msg=@Msg WHERE ProductID=@ProductID
		END
	END
   

END
GO

จากโค้ดการสร้างTriggerข้างต้น ข้อมูลในตารางProducts_AWX หากมีเลข ProductIDเดิมอยู่แล้วก็จะUpdateข้อมูลจากตารางProductsเข้าไป แต่ถ้ายังไม่มีอยู่ก็จะInsertข้อมูลเข้าไป

การแจ้งเตือนทางLINE ให้ใช้ LINE Alarm Toolkit เพื่อส่งข้อมูลจากตารางProducts_AWXไปยังผู้รับ

ตย. Trigger ถ้ามีหลายเงื่อนไข (< 20 เป็น Lo, >50 เป็น Hi)

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER chkPrd
   ON  dbo.Products
   AFTER INSERT,UPDATE
AS 

DECLARE @ProductID as int;
DECLARE @ProductName as nvarchar(50);
DECLARE @UnitsInStock as smallint;
DECLARE @Msg as nvarchar(max);
DECLARE @nProduct as int;
DECLARE @Active as int;


BEGIN

	SET NOCOUNT ON;

	SET @ProductID =(SELECT ProductID from Inserted)
	SET @ProductName =(SELECT ProductName from Inserted)
	SET @UnitsInStock =(SELECT UnitsInStock from Inserted)

	IF @UnitsInStock < 20 Or @UnitsInStock > 50
	BEGIN
		SET @Active = 1
	END


	IF @UnitsInStock < 20 
		SET @Msg='Stock Low'
	ELSE IF @UnitsInStock > 50
		SET @Msg='Stock Hi'



	SET @nProduct = (SELECT count([ProductID]) from Products_AWX2 WHERE ProductID = @ProductID)



	IF @Active = 1

	BEGIN

	IF @nProduct = 0 
		BEGIN
			INSERT INTO Products_AWX2 (ProductID, ProductName, UnitsInStock, Msg) VALUES (@ProductID,@ProductName,@UnitsInStock,@Msg)
		END
		ELSE
		BEGIN
			UPDATE Products_AWX2 SET UnitsInStock = @UnitsInStock, Msg=@Msg WHERE ProductID=@ProductID

		END

   END

END
GO

ตัวอย่างการเซต LINE Alarm Toolkit ให้ส่งข้อมูลจากตาราง Products_AWX โดยเอาข้อมูลจากคอลัมน์ ProductName และ Msg

This entry was posted in GEN64, Tips, Utilities. Bookmark the permalink.

Leave a comment