DROP TRIGGER(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
현재 데이터베이스에서 하나 이상의 DML 또는 DDL 트리거를 제거합니다.
구문
-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ] [ ; ]
-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]
ON { DATABASE | ALL SERVER }
[ ; ]
-- Trigger on a LOGON event (Logon Trigger)
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]
ON ALL SERVER
인수
IF EXISTS
적용 대상: SQL Server (SQL Server 2016(13.x) ~ 현재 버전, SQL Database).
이미 있는 경우에만 트리거를 조건부로 삭제합니다.
schema_name
DML 트리거가 속한 스키마의 이름입니다. DML 트리거는 트리거가 생성된 테이블 또는 뷰의 스키마로 한정됩니다. schema_name은 DDL 또는 LOGON 트리거에 대해 지정될 수 없습니다.
trigger_name
제거할 트리거의 이름입니다. 현재 생성된 트리거 목록을 보려면 sys.server_assembly_modules 또는 sys.server_triggers를 사용하세요.
DATABASE
현재 데이터베이스에 적용된 DDL 트리거의 범위를 나타냅니다. 트리거를 만들거나 수정할 때 DATABASE를 지정한 경우 DATABASE를 지정해야 합니다.
ALL SERVER
적용 대상: SQL Server 2008(10.0.x) 이상
현재 서버에 적용된 DDL 트리거의 범위를 나타냅니다. 트리거를 만들거나 수정할 때 ALL SERVER를 지정한 경우 ALL SERVER를 지정해야 합니다. ALL SERVER는 로그온 트리거에도 적용됩니다.
참고
포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.
설명
트리거 또는 트리거 테이블을 삭제하여 DML 트리거를 제거할 수 있습니다. 테이블을 삭제하면 이와 연결된 모든 트리거도 삭제됩니다.
트리거를 삭제하면 sys.objects, sys.triggers 및 sys.sql_modules 카탈로그 뷰에서 트리거 정보가 제거됩니다.
같은 ON 절을 사용하여 만든 DDL 트리거에 대해서만 하나의 DROP TRIGGER 문으로 여러 개의 DDL 트리거를 삭제할 수 있습니다.
트리거의 이름을 바꾸려면 DROP TRIGGER와 CREATE TRIGGER를 사용합니다. 트리거의 정의를 변경하려면 ALTER TRIGGER를 사용합니다.
특정 트리거에 대한 종속성을 결정하는 방법에 대한 자세한 내용은 sys.sql_expression_dependencies, sys.dm_sql_referenced_entities(Transact-SQL) 및 sys.dm_sql_referencing_entities(Transact-SQL)를 참조하세요.
트리거의 텍스트 보기에 대한 자세한 내용은 sp_helptext(Transact-SQL) 및 sys.sql_modules(Transact-SQL)을 참조하세요.
기존 트리거의 목록 보기에 대한 자세한 내용은 sys.triggers(Transact-SQL) 및 sys.server_triggers(Transact-SQL)을 참조하세요.
사용 권한
DML 트리거를 삭제하려면 트리거가 정의된 테이블 또는 뷰에 대한 ALTER 권한이 필요합니다.
서버 범위(ON ALL SERVER)로 정의된 DDL 트리거 또는 LOGON 트리거를 삭제하려면 현재 서버에서 CONTROL SERVER 권한이 필요합니다. 데이터베이스 범위(ON DATABASE)로 정의된 DDL 트리거를 삭제하려면 현재 데이터베이스에서 ALTER ANY DATABASE DDL TRIGGER 권한이 필요합니다.
예제
A. DML 트리거 삭제
다음 예제에서는 AdventureWorks2022 데이터베이스에서 트리거를 삭제 employee_insupd
합니다. (SQL Server 2016(13.x)부터는 DROP TRIGGER IF EXISTS 구문을 사용할 수 있습니다.)
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
DROP TRIGGER employee_insupd;
B. DML 트리거 삭제
다음 예에서는 safety
DDL 트리거를 삭제합니다.
중요
DDL 트리거는 스키마 범위가 아니고 따라서 sys.objects 카탈로그 뷰에 표시되지 않기 때문에 OBJECT_ID 함수를 사용하여 데이터베이스에 DDL 트리거가 있는지 여부를 쿼리할 수 없습니다. 스키마 범위가 아닌 개체는 해당 카탈로그 뷰를 사용하여 쿼리해야 합니다. DDL 트리거의 경우 sys.triggers를 사용합니다.
DROP TRIGGER safety
ON DATABASE;
관련 항목
ALTER TRIGGER(Transact-SQL)
CREATE TRIGGER(Transact-SQL)
ENABLE TRIGGER(Transact-SQL)
DISABLE TRIGGER(Transact-SQL)
EVENTDATA(Transact-SQL)
DML 트리거에 대한 정보 가져오기
sp_help(Transact-SQL)
sp_helptrigger(Transact-SQL)
sys.triggers(Transact-SQL)
sys.trace_events(Transact SQL)
sys.sql_modules(Transact-SQL)
sys.assembly_modules(Transact-SQL)
sys.server_triggers(Transact-SQL)
sys.server_trigger_events(Transact-SQL)
sys.server_sql_modules(Transact-SQL)
sys.server_assembly_modules(Transact-SQL)