본문 바로가기
DataBase/MsSql

MSSQL Nested Triggers 사용법

by 아우럼 2024. 6. 23.
반응형

Nested Triggers는 첫 번째 테이블의 Trigger는 두 번째 테이블 insert 하고 두 번째 테이블의 Trigger는 세 번째 테이블에 insert 하는 구조입니다.

 

Nested Triggers 설명.

  • Nested Triggers는 Trigger에서 Trigger를 호출하는 구조로 생각하면 이야기하기 쉽습니다.
  • SQL Server의 Nested Triggers는 크게 AFTER Trigger, INSTEAD OF Trigger로 두 가지 유형이 있습니다.
  • SQL Server에서는 DML and DDL Triggers를 최대 32개까지 Nested Triggers를 지원하고 있습니다.
  • Nested Triggers를 무한 루프로 돌리면 중첩 레별이 초과하여 Trigger가 종료됩니다.
  • SQL Server의 Nested Triggers는 다른 Trigger 실행의 결과로 실행되는 Trigger입니다.

Nested Triggers 그림 설명입니다.

Nested Triggers 설명 입니다.
Nested Triggers 설명 입니다.

 

Nested Triggers 사용법.

 

Nested Triggers 소스 코드 입니다.

DROP TABLE IF EXISTS AurumGuide_Nested_Trigger_1;
-- Create Sample Table 
CREATE TABLE AurumGuide_Nested_Trigger_1 (
    AurumId           INT NOT NULL,
    AurumNm           VARCHAR(255) NOT NULL,
    AurumAge          INT  NULL,
    AurumAddress      VARCHAR(500)  NULL
);
 
DROP TABLE IF EXISTS AurumGuide_Nested_Trigger_2;
CREATE TABLE AurumGuide_Nested_Trigger_2 (
    AurumId           INT NOT NULL,
    AurumNm           VARCHAR(255) NOT NULL,
    AurumAge          INT  NULL,
    AurumAddress      VARCHAR(500)  NULL
);

DROP TABLE IF EXISTS AurumGuide_Nested_Trigger_3;
CREATE TABLE AurumGuide_Nested_Trigger_3 (
    AurumId           INT NOT NULL,
    AurumNm           VARCHAR(255) NOT NULL,
    AurumAge          INT  NULL,
    AurumAddress      VARCHAR(500)  NULL
);

DROP TABLE IF EXISTS AurumGuide_Nested_Trigger_4;
CREATE TABLE AurumGuide_Nested_Trigger_4 (
    AurumId           INT NOT NULL,
    AurumNm           VARCHAR(255) NOT NULL,
    AurumAge          INT  NULL,
    AurumAddress      VARCHAR(500)  NULL
);
 
--Trigger 
GO
CREATE OR ALTER TRIGGER TR_AurumGuide_Nested_Trigger_1
ON AurumGuide_Nested_Trigger_1
FOR INSERT
AS  
BEGIN
	INSERT INTO AurumGuide_Nested_Trigger_2 
	SELECT * FROM inserted; 
END;
 
GO

 CREATE OR ALTER TRIGGER TR_AurumGuide_Nested_Trigger_2
ON AurumGuide_Nested_Trigger_2
FOR INSERT
AS  
BEGIN
	INSERT INTO AurumGuide_Nested_Trigger_3
	SELECT * FROM inserted; 
END;

go

CREATE OR ALTER TRIGGER TR_AurumGuide_Nested_Trigger_3
ON AurumGuide_Nested_Trigger_3
FOR INSERT
AS  
BEGIN
	INSERT INTO AurumGuide_Nested_Trigger_4
	SELECT * FROM inserted; 
END;

-- Create Sample Data
INSERT INTO dbo.AurumGuide_Nested_Trigger_1(AurumId,AurumNm) 
VALUES (272, N'Ken')

-- Check Data
SELECT * FROM AurumGuide_Nested_Trigger_1;

SELECT * FROM AurumGuide_Nested_Trigger_2;

SELECT * FROM AurumGuide_Nested_Trigger_3;

SELECT * FROM AurumGuide_Nested_Trigger_4;
반응형