2009-08-07 2 views
4

나는 특정 테이블에 대한 DDL 트리거를 만들려고 해요 그리고 이것은 내가 가지고 올 수있는 최선입니다 :특정 테이블에 대해 DDL 트리거를 만드는 방법은 무엇입니까?

CREATE TRIGGER MyTrigger 
ON DATABASE 
FOR DDL_TABLE_EVENTS 
AS 
DECLARE @EventData  xml 
SET @EventData=EVENTDATA() 

IF @EventData.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(50)')='TABLE' 
    AND @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(50)') ='MyTable' 
BEGIN 
    --do something special here!! 
END 
GO 

이 그것을 할 수있는 유일한 방법은 정말? 나는 사방을 보았지만 spceific 테이블에 트리거를 생성하는 구문을 찾을 수 없었다. 나는 정말로 xml EVENTDATA()를 사용하는 것이 바보 같다고 생각한다.

답변

2

예. 그것은 그것을하는 방법입니다. DDL 트리거는 개별 객체가 아닌 데이터베이스와 연결됩니다. 결과적으로 특정 오브젝트에서만 발생하는 DDL 이벤트에 직접 등록 할 수 없습니다.

1

개체의 특정 인스턴스보다는 DDL 트리거가 DDL_TABLE_EVENTS (또는 ALTER_TABLE 또는 'DROP_TABLE)과 같이 개체 범주와 관련된 작업에 대해 실행됩니다.

Ref. Designing DDL Triggers

관련 문제