2011-04-23 125 views
2

假設我有一個,而不是刪除前的表的觸發器。所以我只想知道我是否發出刪除然後刪除之前觸發器會觸發嗎?而不是刪除之前的觸發

也告訴我如何從刪除數據刪除而不是觸發器。任何人都可以向我展示示例代碼。

回答

2

它引發了而不是的刪除。如果你沒有實現它,你自己就不會被刪除。這些觸發器通常用於視圖而不是表格。

CREATE TABLE T(
C INT IDENTITY(1,1) PRIMARY KEY, 
D INT) 

INSERT INTO T (D) 
SELECT 1 UNION ALL SELECT 2 

GO 

CREATE TRIGGER tr ON T 
INSTEAD OF DELETE 
AS 
BEGIN 
PRINT 'Do Nothing' 
END 

GO 

DELETE 
FROM T 

SELECT * 
FROM T  /*The 2 rows are still there*/ 

GO   /*Implement the trigger*/ 

ALTER TRIGGER tr ON T 
INSTEAD OF DELETE 
AS 
BEGIN 
DELETE T 
FROM T 
JOIN DELETED D 
ON T.C = D.C 
END 

GO 

DELETE 
FROM T 

SELECT * 
FROM T  /*The 2 rows are now gone*/ 

DROP TABLE T