Microsoft SQL Server
방아쇠
수색…
소개
트리거는 이벤트가 발생한 후 자동으로 실행되는 특수 유형의 저장 프로 시저입니다. 트리거에는 두 가지 유형이 있습니다. 데이터 정의 언어 트리거 및 데이터 조작 언어 트리거.
일반적으로 테이블에 바인딩되어 자동으로 실행됩니다. 명시 적으로 트리거를 호출 할 수는 없습니다.
방아쇠의 유형과 분류
SQL Server에는 DDL 트리거와 DML 트리거라는 두 가지 범주의 트리거가 있습니다.
DDL 트리거는 DDL (Data Definition Language) 이벤트에 대한 응답으로 시작됩니다. 이러한 이벤트는 주로 CREATE
, ALTER
및 DROP
키워드로 시작하는 Transact-SQL 문에 해당합니다.
DML 트리거는 DML (Data Manipulation Language) 이벤트에 대한 응답으로 시작됩니다. 이러한 이벤트는 INSERT
, UPDATE
및 DELETE
키워드로 시작하는 Transact-SQL 문에 해당합니다.
DML 트리거는 두 가지 주요 유형으로 분류됩니다.
After 트리거 (트리거의 경우)
- AFTER 트리거 이후.
- AFTER UPDATE 트리거.
- AFTER DELETE 트리거.
트리거 대신
- INSTEAD OF INSERT 트리거.
- INSTEAD OF UPDATE 트리거.
- INSTEAD OF DELETE 트리거.
DML 트리거
DML 트리거는 dml 문 ( insert
, update
또는 delete
)에 대한 응답으로 시작됩니다.
단일 테이블이나 뷰에 대해 하나 이상의 dml 이벤트를 처리하기 위해 dml 트리거를 만들 수 있습니다. 즉, 단일 dml 트리거는 특정 테이블이나 뷰에서 레코드 삽입, 업데이트 및 삭제를 처리 할 수 있지만 해당 테이블 또는 뷰에서 변경되는 데이터 만 처리 할 수 있습니다.
DML 트리거는 트리거를 시작한 삽입, 업데이트 또는 삭제 문의 영향을 받았거나 영향을받을 데이터에 대한 정보가 들어있는 inserted
및 deleted
테이블에 대한 액세스를 제공합니다.
DML 트리거 문을 기반으로 참고, 행 기반 없습니다. 즉, 명령문이 하나 이상의 행에 영향을 주면 삽입되거나 삭제 된 테이블에는 하나 이상의 행이 포함됩니다.
예 :
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR INSERT
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Inserted'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR UPDATE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Updated'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR DELETE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Deleted'
FROM Deleted
GO
위의 모든 예제는 레코드가 tblSomething에 추가, 삭제 또는 업데이트 될 때마다 tblAudit에 레코드를 추가합니다.