반응형
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 소스 코드 입니다.
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;
반응형