DDL 트리거 구현Implement DDL Triggers

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse 이 항목에서는 DDL 트리거 생성, DDL 트리거 수정, DDL 트리거 해제 또는 삭제 방법에 대한 정보를 제공합니다. This topic provides information to help you create DDL triggers, modify DDL triggers, and disable or drop DDL triggers.

DDL 트리거 만들기Creating DDL Triggers

DDL 트리거는 DDL 트리거에 대한 Transact-SQLTransact-SQL CREATE TRIGGER 문을 사용하여 만듭니다.DDL triggers are created by using the Transact-SQLTransact-SQL CREATE TRIGGER statement for DDL triggers.

DDL 트리거를 만들려면To create a DDL trigger

중요

나중 버전의 SQL ServerSQL Server에서는 트리거에서 결과 집합을 반환하는 기능이 제거됩니다.The ability to return result sets from triggers will be removed in a future version of SQL ServerSQL Server. 결과 집합을 반환하는 트리거는 트리거가 작동하지 않는 응용 프로그램에 예기치 않은 동작을 유발할 수도 있습니다.Triggers that return result sets may cause unexpected behavior in applications that are not designed to work with them. 향후 개발 작업에서는 트리거에서 결과 집합을 반환하지 않도록 하고 현재 이 기능을 사용하는 응용 프로그램은 수정하세요.Avoid returning result sets from triggers in new development work, and plan to modify applications that currently do this. SQL ServerSQL Server에서 트리거가 결과 집합을 반환하지 않도록 하려면 disallow results from triggers 옵션을 1로 설정합니다.To prevent triggers from returning result sets in SQL ServerSQL Server, set the disallow results from triggers Option to 1. 이후 버전의 SQL ServerSQL Server에서는 이 옵션이 기본적으로 1로 설정됩니다.The default setting of this option will be 1 in a future version of SQL ServerSQL Server.

DDL 트리거 수정Modifying DDL Triggers

트리거를 삭제하고 다시 만들거나 기존 트리거를 한 단계로 다시 정의하여 DDL 트리거 정의를 수정할 수 있습니다.If you have to modify the definition of a DDL trigger, you can either drop and re-create the trigger or redefine the existing trigger in a single step.

DDL 트리거가 참조하는 개체의 이름을 변경하는 경우 트리거 텍스트에 새 개체 이름이 반영되도록 트리거를 수정해야 합니다.If you change the name of an object that is referenced by a DDL trigger, you must modify the trigger so that its text reflects the new name. 따라서 개체 이름을 바꾸기 전에는 먼저 개체의 종속성을 표시하여 영향을 받는 트리거가 있는지 확인해야 합니다.Therefore, before renaming an object, display the dependencies of the object first to determine whether any triggers are affected by the proposed change.

트리거 정의를 암호화하도록 트리거가 수정될 수도 있습니다.A trigger can also be modified to encrypt its definition.

트리거를 수정하려면To modify a trigger

DDL 트리거 비활성화 및 삭제Disabling and Dropping DDL Triggers

더 이상 필요 없는 DDL 트리거는 비활성화하거나 삭제할 수 있습니다.When a DDL trigger is no longer needed, you can disable it or delete it.

DDL 트리거를 비활성화해도 해당 트리거가 삭제되지 않으며Disabling a DDL trigger does not drop it. 현재 데이터베이스의 개체로 남아 있습니다.The trigger still exists as an object in the current database. 그러나 해당 트리거가 프로그래밍된 Transact-SQLTransact-SQL 문을 실행하는 경우에도 트리거는 발생되지 않습니다.However, the trigger will not fire when any Transact-SQLTransact-SQL statements on which it was programmed are run. DDL 트리거를 해제했다가 다시 설정할 수 있습니다.DDL triggers that are disabled can be reenabled. DDL 트리거를 설정하면 처음 만들었을 때와 동일한 방법으로 트리거가 발생됩니다.Enabling a DDL trigger causes it to fire in the same way the trigger did when it was originally created. DDL 트리거를 만들면 기본적으로 설정됩니다.When DDL triggers are created, they are enabled by default.

DDL 트리거를 삭제하면 현재 데이터베이스에서 삭제됩니다.When a DDL trigger is deleted, it is dropped from the current database. DDL 트리거가 적용된 개체 또는 데이터는 영향을 받지 않습니다.Any objects or data upon which the DDL trigger is scoped are not affected.

DDL 트리거를 비활성화하려면To disable a DDL trigger