반응형
MSSQL Trigger는 enable, disable을 통해서 Trigger 동작을 조절할 수 있습니다.
Trigger enable, disable 설명.
- Trigger를 잠시 off가 필요한 경우 disable 명령어를 통해서 사용합니다.
- 은행이나 증권사의 경우 정기 점검 시간에 테이블에 대량을 data를 upload 하면 trigger가 실행되지 않도록 하는 경우가 발생합니다.
- 그럼, Trigger를 disable 시킨 후 작업을 시작합니다.
- 작업을 완료하면 다시 서비스를 위해서 triggers를 enable 할 수 있습니다.
Trigger enable, disable 사용법
Trigger enable, disable의 syntax는?
-- Syntax
[ENABLE | DISABLE]TRIGGER [Trigger_Name | ALL] ON [Object_Name | DATABASE | ALL SERVER]
- ENABLE:정지된 triggers를 사용할 때 사용합니다.
- DISABLE: 사용하고 있는 Trigger를 정지할 때 사용합니다.
- Trigger_Name | ALL: Trigger_Name에는 한 개의 trigger만 정지할 때 사용하고, ALL은 전체를 변경할 때 사용합니다.
- Object_Name: Object_Name은 보통 테이블 이름이 사용됩니다. 특정 테이블의 trigger 상태를 변경할 때 사용합니다.
- DATABASE: DATABASE 단위로 Trigger 상태를 변경할 수 있습니다.
- ALL SERVER: 서버 전체의 Trigger 상태를 변경할 수 있습니다.
Trigger enable, disable 소스 코드.
DROP TABLE IF EXISTS AurumGuide_ENABLE;
-- Create Sample Table
DROP TABLE IF EXISTS AurumGuide_ENABLE;
CREATE TABLE AurumGuide_ENABLE (
AurumId INT NOT NULL,
AurumNm VARCHAR(255) NOT NULL,
AurumAge INT NULL,
AurumAddress VARCHAR(500) NULL
);
go
DROP TABLE IF EXISTS AurumGuide_ENABLE_LOG;
CREATE TABLE AurumGuide_ENABLE_LOG (
AurumId INT NOT NULL,
AurumNm VARCHAR(255) NULL,
AurumEvent VARCHAR(255) NULL,
AurumDateTime datetime NULL
);
go
CREATE OR ALTER TRIGGER dbo.TR_AurumGuide_ENABLE
ON dbo.AurumGuide_ENABLE
AFTER INSERT
AS
INSERT INTO dbo.AurumGuide_ENABLE_LOG
(AurumId,AurumNm, AurumEvent, AurumDateTime)
SELECT AurumId,AurumNm,'INSERT', GETDATE() FROM inserted;
-- Check status.
SELECT name,
parent_class_desc,
type_desc,
is_disabled
FROM sys.triggers
WHERE name = 'TR_AurumGuide_ENABLE';
-- DISABLE /ENABLE.
-- CASE 1.
DISABLE TRIGGER TR_AurumGuide_ENABLE ON AurumGuide_ENABLE;
ENABLE TRIGGER TR_AurumGuide_ENABLE ON AurumGuide_ENABLE;
-- DISABLE /ENABLE.
-- CASE 2.
ENABLE TRIGGER ALL ON dbo.AurumGuide_ENABLE;
DISABLE TRIGGER ALL ON dbo.AurumGuide_ENABLE;
반응형