SQL SERVER 에서 각종 트리거 의 전체 문법 및 매개 변수 설명
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }
<dml_trigger_option> ::=
[ ENCRYPTION ]
[
EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE STATISTICS statement (DDL Trigger)
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }
<ddl_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
Trigger on a LOGON event (Logon Trigger)
CREATE TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR| AFTER } LOGON
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }
<logon_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
인자:schema_name
DML 트리거 소속 구조의 이름 입 니 다.DML 트리거 의 역할 영역 은 이 트리거 의 표 나 보 기 를 만 드 는 구조 입 니 다.DDL 이나 로그 인 트리거 에 대해 서 는 지정 할 수 없습니다. schema_name。
trigger_name
트리거 이름.trigger_name 식별 자 규칙 을 따라 야 하지만, trigger_name \#또는\#로 시작 할 수 없습니다.
table | view
DML 트리거 를 실행 하 는 표 나 보 기 를 트리거 표 나 트리거 보기 라 고 부 릅 니 다.필요 에 따라 표 나 보기 의 완전 한정 이름 을 지정 할 수 있 습 니 다.보 기 는 인 스타 드 오 브 트리거 에 만 인 용 됩 니 다.부분 또는 전역 임시 표 에 DML 트리거 를 정의 할 수 없습니다.
DATABASE
DDL 트리거 의 역할 영역 을 현재 데이터베이스 에 적용 합 니 다.이 매개 변 수 를 지정 하면 현재 데이터베이스 에 나타 나 기만 하면 됩 니 다. event_type 또는 event_group,이 트리거 를 자극 합 니 다.
ALL SERVER
현재 서버 에 DDL 이나 로그 인 트리거 의 역할 영역 을 적용 합 니 다.이 인 자 를 지정 하면 현재 서버 의 모든 위치 에 나타 나 기만 하면 됩 니 다. event_type 혹시 event_group,이 트리거 를 자극 합 니 다.
WITH ENCRYPTION
CREATE TRIGGER 문장의 텍스트 를 모호 하 게 처리 합 니 다.WITH ENCRYPTION 을 사용 하면 트리거 를 SQL Server 복제 의 일부분 으로 발표 하 는 것 을 방지 할 수 있 습 니 다.CLR 트리거 에 WITH ENCRYPTION 을 지정 할 수 없습니다.
EXECUTE AS
이 트리거 를 실행 할 보안 컨 텍스트 를 지정 합 니 다.트리거 가 인용 한 임의의 데이터베이스 대상 의 권한 을 검증 하 는 데 사용 할 SQL Server 인 스 턴 스 를 제어 할 수 있 습 니 다.
FOR | AFTER
AFTER 지정 DML 트리거 는 트리거 SQL 구문 에서 지정 한 모든 작업 이 성공 적 으로 실 행 될 때 만 실 행 됩 니 다.모든 인용 등급 연결 작업 과 제약 검사 도 이 트리거 를 자극 하기 전에 성공 적 으로 완료 해 야 합 니 다.
FOR 키워드 만 지정 하면 AFTER 는 기본 값 입 니 다.
보기 에 AFTER 트리거 를 정의 할 수 없습니다.
INSTEAD OF
SQL 문 구 를 터치 하 는 대신 DML 트리거 를 지정 하기 때문에 트리거 문 구 를 실행 하 는 것 보다 우선 순위 가 높 습 니 다.DDL 이나 로그 인 트리거 에 인 스타 드 오 브 를 지정 할 수 없습니다.
표 나 보기 에 대해 서 는 INSERT,UPDATE 또는 DELETE 문 구 를 최대 하나의 INSTEAD OF 트리거 로 정의 할 수 있 습 니 다.단,인 스타 드 오 브 트리거 가 있 는 여러 보기 의 보 기 를 정의 할 수 있 습 니 다.
인 스타 드 오 브 트리거 는 WITH CHECK OPTION 의 업데이트 보 기 를 사용 할 수 없습니다.WITH CHECK OPTION 이 지정 한 업데이트 가능 한 보기에 인 스타 드 오 브 트리거 를 추가 하면 SQL Server 에 오류 가 발생 합 니 다.사용 자 는 ALTER VIEW 로 이 옵션 을 삭제 해 야 인 스타 드 오 브 트리거 를 정의 할 수 있 습 니 다.
{ [DELETE] [,] [INSERT] [,] [UPDATE] }
데이터 수정 문 구 를 지정 합 니 다.이 문 구 는 DML 트리거 가 이 표 나 보 기 를 시도 할 때 이 트리거 를 활성화 할 수 있 습 니 다.최소한 하나의 옵션 을 지정 해 야 합 니 다.트리거 정의 에서 위 옵션 의 임의의 순서 조합 을 사용 할 수 있 습 니 다.
인 스 티 드 오 브 트리거 에 대해 서 는 ON DELETE 의 인용 관 계 를 지정 하 는 표 에 DELETE 옵션 을 사용 할 수 없습니다.마찬가지 로 ON UPDATE 의 인용 관 계 를 지정 한 직렬 연결 동작 이 있 는 표 에 도 UPDATE 옵션 을 사용 할 수 없습니다.
event_type
실행 후 DDL 트리거 를 자극 하 는 Transact-SQL 언어 이벤트 의 이름 을 가 져 옵 니 다.DDL 이벤트 에는 DDL 트리거 의 유효한 이벤트 가 열거 되 어 있 습 니 다.
event_group
미리 정 의 된 Transact-SQL 언어 이벤트 그룹의 이름 입 니 다.에 속 하 는 모든 것 을 실행 합 니 다. event_group 의 Transact-SQL 언어 이벤트 이후 DDL 트리거 를 자극 합 니 다.DDL 이벤트 그룹 에는 DDL 트리거 의 유효한 이벤트 그룹 이 열거 되 어 있 습 니 다.
CREATE TRIGGER 실행 완료 후 이벤트group 또한 포 함 된 이벤트 형식 을 sys.trigger 에 추가 할 수 있 습 니 다.events 디 렉 터 리 보기에 서 매크로 로 사용 합 니 다.
WITH APPEND
기 존 형식의 트리거 를 추가 해 야 할 것 을 지정 합 니 다.호 환 단계 가 65 보다 같 거나 낮 을 때 만 이 옵션 을 사용 해 야 합 니 다.호환성 등급 이 70 이상 이면 WITH APPEND 자 구 를 사용 하여 기 존 유형의 다른 트리거 를 추가 할 필요 가 없다.호 환 단계 설정 이 70 이상 인 CREATE TRIGGER 의 기본 동작 입 니 다.WITH APPEND 는 인 스타 드 오 브 트리거 와 함께 사용 할 수 없습니다.AFTER 트리거 를 명시 적 으로 밝 혔 다 면 이 절 을 사용 할 수도 없다.뒤로 호 환 하기 위해 FOR 를 지 정 했 을 때(그러나 인 스 테 드 오 브 나 AFTER 가 없 을 때)에 만 WITH APPEND 를 사용 할 수 있다.EXTERNAL NAME(즉 트리거 는 CLR 트리거)를 지정 하면 WITH APPEND 를 지정 할 수 없습니다.
NOT FOR REPLICATION
트리거 와 관련 된 시 계 를 복사 할 때 트리거 를 실행 하지 말 라 고 지시 합 니 다.자세 한 정 보 는 NOT FOR REPLICATION 을 사용 하여 제약,표지 와 트리거 를 제어 하 는 것 을 참조 하 시기 바 랍 니 다.
sql_statement
트리거 조건 과 조작.트리거 조건 은 시 도 된 DML,DDL 또는 logon 이벤트 가 트리거 작업 을 수행 하 는 지 확인 하 는 데 사용 되 는 다른 기준 을 지정 합 니 다.
위 동작 을 시도 할 때 Transact-SQL 구문 에서 지정 한 트리거 동작 을 수행 합 니 다.
트리거 는 임의의 수량 과 종류의 Transact-SQL 문 구 를 포함 할 수 있 지만 예외 도 있다.트리거 의 용 도 는 데이터 수정 이나 정의 문 에 따라 데 이 터 를 검사 하거나 변경 하 는 것 입 니 다.그것 은 사용자 에 게 데 이 터 를 되 돌려 서 는 안 된다.트리거 에 있 는 Transact-SQL 문 구 는 스 트림 제어 언어 를 자주 포함 합 니 다.
DML 트리거 사용 deleted 화해시키다 inserted 논리 표.이들 은 구조 적 으로 트리거 를 정의 하 는 표,즉 사용자 작업 을 시도 하 는 표 와 유사 하 다....에 있다 deleted 화해시키다 inserted 표 는 사용자 가 변경 할 수 있 는 줄 의 오래된 값 이나 새 값 을 저장 합 니 다.검색 deleted 표 의 모든 값 을 사용 합 니 다:
SELECT *FROM deleted
DDL 과 로그 인 트리거 는 이벤트 DATA(Transact-SQL)함 수 를 사용 하여 트리거 이벤트 에 대한 정 보 를 얻 습 니 다.
DELETE,INSERT 또는 UPDATE 트리거 에서 호 환 단 계 를 70 으로 설정 하면 SQL Server 가 허용 하지 않 습 니 다. inserted 와 deleted 표 에 존재 함 text、ntext 혹시 image 열 참조.접근 불가 inserted 화해시키다 deleted 표 의 text,ntext 화해시키다 image 값 1INSERT 나 UPDATE 트리거 에서 새 값 을 검색 하려 면 inserted 표 와 원본 업데이트 표 가 연결 되 어 있 습 니 다.호환성 등급 이 65 보다 같 거나 낮 으 면 inserted 혹시 deleted 텍스트 아니면 Null 값 을 허용 하 는... image 열 이 Null 값 을 되 돌려 줍 니 다.열 이 Null 이 될 수 없다 면 0 길이 의 문자열 을 되 돌려 줍 니 다.
호 환 수준 이 80 이상 이면 SQL Server 는 표 나 보기 의 인 스 턴 트 오 브 트리거 를 통 해 text,ntext 를 업데이트 할 수 있 습 니 다. 혹시 image 열거 하 다.
< method_specifier>
CLR 트리거 에 대해 서 는 프로그램 집합 과 트리거 를 연결 하 는 방법 을 지정 합 니 다.이 방법 은 어떠한 인자 도 가지 고 있 을 수 없 으 며 빈 값 을 되 돌려 야 합 니 다.class_name 유효한 SQL Server 식별 자 여야 하 며,이 종 류 는 보 이 는 프로그램 에 집중 되 어야 합 니 다.이 클래스 에"."를 사용 하여 네 임 스페이스 부분 을 구분 하 는 네 임 스페이스 한정 이름 이 있다 면,클래스 이름 은[]또는"구분자 로 구분 해 야 합 니 다.이 종 류 는 끼 워 넣 을 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.