트리거
트리거 소개:
트리거는 프로그램에 의해 호출되거나 수동으로 시작되지 않고 이벤트에 의해 실행됩니다. (삽입, 삭제, 업데이트)가 테이블에서 수행되면 해당 실행이 활성화됩니다. 트리거는 데이터 무결성 제약 조건 및 비즈니스 규칙을 강화하는 데 사용되는 경우가 많습니다. 제 생각에는 트리거는 C#에서와 마찬가지로 실제로 이벤트이며, 버튼을 클릭하면 해당 작업이 트리거됩니다.
트리거 분류:
(1) DML(Data Manipulation Language) 트리거: 데이터베이스에 DML 이벤트가 발생하면 트리거가 활성화된다는 의미입니다. DML 이벤트는 테이블이나 뷰의 데이터를 수정하는 삽입, 업데이트 및 삭제 문을 참조합니다.
(2) DDL(Data Definition Language) 트리거: 서버나 데이터베이스에서 DDL 이벤트가 발생하면 활성화됩니다. DDL 이벤트는 테이블이나 인덱스의 create, alter, drop 문을 참조합니다. > (3) 로그인 트리거 : 사용자가 SQL SERVER 인스턴스에 로그인하여 세션을 설정할 때 트리거됩니다.
SQL SERVER 2008에서는 DML 트리거 구현에 DELETED 및 INSERTED가 사용됩니다. 이 두 테이블은 데이터베이스 서버의 메모리에 생성되며, DELETED 및 INSERED 테이블의 구조는 이후 트리거가 실행되는 데이터 테이블의 구조와 동일합니다. 자동 삭제: INSERED 테이블은 삽입, 업데이트 및 삭제 문을 실행한 후 업데이트한 레코드를 저장하는 데 사용됩니다. 예를 들어 데이터 조각을 삽입하면 해당 레코드가 DELETED 테이블에 삽입됩니다. 삽입, 업데이트 및 삭제 문을 실행하기 전에 데이터베이스에 생성한 트리거 테이블을 저장하는 데 사용됩니다. 예를 들어 원본 테이블에 세 개의 데이터가 있는 경우에도 세 개의 데이터가 있을 수 있습니다. 이 두 개의 임시 데이터를 사용하여 특정 데이터 수정의 효과를 테스트하고 트리거 작업 조건을 설정합니다.
구문
트리거 생성
트리거 삭제:
트리거 수정:CREATE TRIGGER 触发器名称 ON 表名 { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ DELETE ] [ , ] [UPDATE ] } AS SQL 语句 [ ... n ]
DROP TRIGGER 触发器名 [ , ... n ]
ALTER TRIGGER 触发器名称 ON 表名 { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ DELETE ] [ , ] [UPDATE ] } AS SQL 语句 [ ... n ]
disable trigger trigDB on database --禁用触发器 enable trigger trigDB on database --开启触发器
print '删除了触发器***' raiserror('数据一致性验证',16,1) rollback transaction
S 테이블에서 생성됨 업데이트 트리거:
SC 테이블에서 낙제 학생의 성적을 삭제하는 것은 금지되어 있습니다.
Create trigger tri_Updates on s for update as print 'the table s was updated'
CREATE TRIGGER tri_del_grade ON SC FOR DELETE AS IF EXISTS(SELECT * FROM DELETED WHERE Grade < 60) ROLLBACK