수색…


소개

트리거는 이벤트가 발생한 후 자동으로 실행되는 특수 유형의 저장 프로 시저입니다. 트리거에는 두 가지 유형이 있습니다. 데이터 정의 언어 트리거 및 데이터 조작 언어 트리거.

일반적으로 테이블에 바인딩되어 자동으로 실행됩니다. 명시 적으로 트리거를 호출 할 수는 없습니다.

방아쇠의 유형과 분류

SQL Server에는 DDL 트리거와 DML 트리거라는 두 가지 범주의 트리거가 있습니다.

DDL 트리거는 DDL (Data Definition Language) 이벤트에 대한 응답으로 시작됩니다. 이러한 이벤트는 주로 CREATE , ALTERDROP 키워드로 시작하는 Transact-SQL 문에 해당합니다.

DML 트리거는 DML (Data Manipulation Language) 이벤트에 대한 응답으로 시작됩니다. 이러한 이벤트는 INSERT , UPDATEDELETE 키워드로 시작하는 Transact-SQL 문에 해당합니다.

DML 트리거는 두 가지 주요 유형으로 분류됩니다.

  1. After 트리거 (트리거의 경우)

    • AFTER 트리거 이후.
    • AFTER UPDATE 트리거.
    • AFTER DELETE 트리거.
  2. 트리거 대신

    • INSTEAD OF INSERT 트리거.
    • INSTEAD OF UPDATE 트리거.
    • INSTEAD OF DELETE 트리거.

DML 트리거

DML 트리거는 dml 문 ( insert , update 또는 delete )에 대한 응답으로 시작됩니다.
단일 테이블이나 뷰에 대해 하나 이상의 dml 이벤트를 처리하기 위해 dml 트리거를 만들 수 있습니다. 즉, 단일 dml 트리거는 특정 테이블이나 뷰에서 레코드 삽입, 업데이트 및 삭제를 처리 할 수 ​​있지만 해당 테이블 또는 뷰에서 변경되는 데이터 만 처리 할 수 ​​있습니다.

DML 트리거는 트리거를 시작한 삽입, 업데이트 또는 삭제 문의 영향을 받았거나 영향을받을 데이터에 대한 정보가 들어있는 inserteddeleted 테이블에 대한 액세스를 제공합니다.

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에 레코드를 추가합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow