Key Word 2 ตัวนี้มีความหมายคือ
- INSERTED ก็คือข้อมูลปัจจุบันที่เพิ่งนำเข้ามาใน Table
- DELETED ก็คือข้อมูลที่เพิ่งจะลบออกไป หรือเมื่อมีความต้องการที่จะลบ
DELETE FROM TABLE WHERE (TABLE_ID = deleted.ID)
เมื่อต้องการจะ Execute จะเกิดปัญหาคือ การมองว่า inserted หรือ deleted เป็น Table หนึ่ง ที่ไม่มีอยู่จริง
"The column prefix 'deleted' does not match with a table name or alias name used in the query."
การแก้ไขคือประกาศตัวแปรมารับค่าของข้อมูลที่ต้องการใช้งานจาก inserted หรือ deleted ก่อน เช่น
//ประกาศตัวแปรมารับค่าจาก Field
DECLARE @number char(4) , @open_id char(11)
//เอาตัวแปรไปรับค่าเก็บไว้ เพื่อใช้งานใน Query หลังจากนี้
SELECT @number=NUMBER,@open_id=OPEN_ID FROM deleted
Code ด้านล่างนี้เป็นตัวอย่างการสร้าง trigger ให้ VIEW สามารถลบข้อมูลได้
CREATE TRIGGER delFormNum
ON dbo.VIEW_TKRNUMBERSTK
INSTEAD OF DELETE
AS
BEGIN
DECLARE @number char(4) , @open_id char(11)
SELECT @number=NUMBER,@open_id=OPEN_ID FROM deleted
DELETE FROM TKR_OPENRECEIPTDTL
WHERE (NUMBER = @number) AND (RECEIPT_CODE IS NULL);
DELETE FROM TKR_OPENRECEIPT
WHERE (OPEN_ID = @open_Id);
COMMIT;
END
GO
ไม่มีความคิดเห็น:
แสดงความคิดเห็น