Database/SQL Server

SQL Server - DDL(Data Definition Language) 트리거 trigger에 대해

청렴결백한 만능 재주꾼 2020. 12. 12. 01:26
반응형

DDL 트리거는 무엇인가 ? What are DDL triggers ?

DDL 트리거는 DDL 이벤트에 실행으로 반응한다. DDL과 유사한 작업을 수행하는 특정 시스템에 저장 프로시저도 DDL 트리거를 실행할 수 있다.
DDL triggers fire in response to DDL events-CREATE, ALTER, and DROP(Table, Function, Index, Stored Procedure etc...). Certain system stored Procedures that perform DDL-like operations can also fire DDL triggers.

 

혹시 DDL 이벤트 리스트가 더 보고 싶다면 참고.

docs.microsoft.com/en-us/sql/relational-databases/triggers/ddl-events?redirectedfrom=MSDN&view=sql-server-ver15

 

DDL Events - SQL Server

DDL Events

docs.microsoft.com

 

트리거 사용처 What is the use of DDL triggers
 - 특정 DDL 이벤트에 대한 반응으로 실행할 때 If you want to execute some code in response to a specific DDL event
 - 데이터베이스 스키마 어떠한 변경을 막을 때 To prevent certain changes to your database schema
 - 유저가 데이터베이스 구조를 변경할 때 Audit the changes that the users are making to the database structure

 

데이터베이스 트리거 만드는 예시)

-- This trigger fires whenever a table is created
-- Trigger that fires in response to a single DDL event
Create trigger trMyFirstTrigger
ON Database
FOR CREATE_TABLE
AS
BEGIN
	 Print 'New table created'
END



-- This trigger fires whenever a table is created, alterd or dropped
-- Trigger that fires in response to a multiple DDL events
ALTER TRIGGER trMyFirstTrigger
ON Database
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS
BEGIN
	Print 'You just created, modified or deleted a table'
END

 

정보 :

DDL 트리거는 특정 데이터베이스나 서버 범위에 만들어질 수 있다. DDL triggers can be created in a specific database or at the server level.

 

서버 전역 트리거 만드는 예시)

CREATE TRIGGER tr_ServerScopeTrigger
ON ALL SERVER
FOR CREATE_TABLE,ALTER_TABLE, DROP_TABLE
AS
BEGIN
	ROLLBACK
    Print 'You cannot create, alter or drop a table'
END

 

트리거 사용하지 않기 예시)

DISABLE TRIGGER tr_ServerScopeTrigger ON ALL SERVER
반응형