T - SQL 트리거
5009 단어 sql
트리거 의 일반적인 기능 은 다음 과 같 습 니 다.
(1) 데이터베이스 에 있 는 표를 직렬 로 수정 합 니 다.
(2) 검사 제약 보다 더 복잡 한 제약 작업 을 실시한다.
(3) 인용 완전 성 을 위반 하 는 조작 을 거절 하거나 거절 합 니 다.
(4) 비교 표 수정 전후 데이터 간 의 차이.
트리거 를 만 들 기 전에 다음 규칙 을 준수 해 야 합 니 다:
(1) CREATE TRIGGER 문 구 는 일괄 처리 의 첫 번 째 문장 이 어야 하 며, 일괄 처리 에 나타 난 다른 모든 문 구 는 CREATE TRIGGER 문 구 를 정의 하 는 일부분 으로 해 석 됩 니 다.
(2) 모든 트리거 는 데이터 대상 이기 때문에 그 이름 은 식별 자의 이름 규칙 을 지 켜 야 한다.
(3) 기본 적 인 상황 에서 트리거 를 만 드 는 권한 은 데이터 시트 의 소유자 에 게 할당 되 고 이 권한 을 다른 사용자 에 게 이전 할 수 없습니다.
(4) 트리거 는 현재 데이터베이스 이외 의 대상 을 참조 할 수 있 지만 현재 데이터베이스 에 만 트리거 를 만 들 수 있 습 니 다.
(5) 임시 데이터 시트 에 트리거 를 만 들 수 는 없 지만 임시 데이터 시트 를 참조 할 수 있 습 니 다.
(6) 시스템 데이터 시트 에 트리거 를 만 들 수도 없고 시스템 데이터 시트 를 참조 할 수도 없다.
(7) DELETE 나 UPDATE 를 사용 하여 정 의 된 외부 키 를 포함 하 는 표 에 서 는 INSTEAD OF 와 INSTEAD OF UPDATE 를 정의 할 수 없습니다.
(8) TRUNCATE TABLE 문 구 는 where 자 구 를 포함 하지 않 는 DELETE 문구 와 유사 하지만 DELETE 트리거 를 일 으 키 지 않 습 니 다.
(9) WRITETEXT 문 구 는 INSERT 나 UPDATE 트리거 를 일 으 키 지 않 습 니 다.
(10) 아래 의 문 구 는 트리거 를 만 들 수 없습니다. ALERT DATABASE, CREATE DATABASE, DISK INIT, DISK INSIZE, DROP DATABASE, LOAD DATABASE, LOAD LOG, RECONFIGURE, RESTORE DATABASE, RESTORE LOG.
트리거 생 성 형식 은 다음 과 같 습 니 다.
CREATE TRIGGER[owner,]trigger_name
On[owner,]table_name
[WITH ENCRYPTION]
{
FOR{[INSERT][,UPDATE][,DELETE]}
[NOT FORREPLICATION]
AS sql_statements
}
위 문장 에서:
① trigger_name: 생 성 을 위 한 트리거 이름 은 SQL Server 의 이름 규칙 을 지 켜 야 하 며, 같은 데이터베이스 에 서 는 트리거 이름 이 같은 상황 이 발생 할 수 없습니다.
② table_name: 이 구문 에서 정 의 된 트리거 에 기반 한 표 입 니 다. 터치 발표 라 고도 합 니 다.
⑨ WITH ENCRYPTION 옵션: SQL Server 는 트리거 의 정의 텍스트 를 시스템 분류 표 syscoments 에 저장 합 니 다. 이 옵션 을 사용 하면 SQL Server 가 이 트리거 정의 텍스트 를 암호 화하 여 저장 하여 제3자 사용자 가 syscoments 표 에서 이 트리거 정의 텍스트 의 내용 을 읽 지 않도록 합 니 다.
④ NOT FOR REPLICATION 옵션: 복사 과정 에서 수정 터치 발표 데이터 가 나타 날 때 트리거 가 활성화 되 지 않 음 을 설명 합 니 다.
⑤ FOR {[INSERT] [, UPDATE] [, DELETE]}: 트리거 의 트리거 이 벤트 를 정의 합 니 다.어떤 트리거 가 표 의 여러 이벤트 에 의 해 실 행 될 때 INSERT, UPDATE, DELETE 사이 에서 사용 할 수 있 습 니 다. "기 호 는 간격 문자 로 조합 하여 표시 합 니 다.
⑥sql_statements: 트리거 이벤트 가 발생 했 을 때 (활성화 되 었 을 때) 실행 할 동작 을 정의 합 니 다.
트리거 를 만 드 는 두 번 째 정의 형식의 트리거 이 벤트 는 INSERT 와 UPDATE 에 만 제 한 됩 니 다.문법 형식:
CREATE TRIGGER[owner,]trigger_name
On[owner,]table_name
[WITH ENCRYPTION]
{
FOR{[INSERT][,UPDATE]}
[NOT FOR REPLICATION]
AS
{IF UPDATE(column)
[{AND|OR}UPDATE(column)]
|
IF(COLUMNS UPDATED(){bitwise_operator}updated_bitmask
{comparison_operator column_bitmask}
sql_statements
}
}
두 번 째 형식 에 서 는 트리거 의 트리거 조건 이 IF 구문 에서 지정 한 열 값 에 만 한정 되 어 있 음 을 IF 자구 로 설명 해 야 합 니 다.IF 자구 에서 지정 한 수 정 된 열 은 다음 과 같은 두 가지 형식 이 있 습 니 다.
IF UPDATE(column)[{AND|OR}UPDATE(column)]
화해시키다
IF (COLUMNS UPDATED () {비트 연산 자) updated bitmask (L [연산 자 column bitmask) 중:
① column: 트리거 를 활성화 하 는 트리거 조건 에서 데 이 터 는 INSERT 또는 UPDATE 작업 으로 수 정 된 열 을 가리킨다.
② updated bitmask: 여러분 의 비트 차단 값 을 정의 합 니 다.
⑨ column bitmask: 검 측 대상 열 에 있 는 비트 차단 값 의 값 을 정의 합 니 다. 각 열 에 있 는 차단 위 치 는 터치 발표 에 있 는 번호 입 니 다.
④ COLUMNS UPDATED (): 지정 한 열의 열 값 이 삽입 되 거나 수정 되 었 는 지 확인 하 는 데 사 용 됩 니 다. 비트 연산 자, 연산 자 와 updated bitmask (여러분 의 비트 차단 값), column bitmask (각 검사 대상 열의 비트 차단 값) 을 비교 해 야 합 니 다.몇 개의 매개 변 수 를 함께 검사 대상 열 을 설명 합 니 다. 만약 하나의 터치 발표 에 5 개의 검사 대상 열 이 있다 면, 각 열 에 대응 하 는 차단 위 치 는 1 ~ 5 이 고, 해당 하 는 차단 수 치 는 20 ~ 24 입 니 다. 예 를 들 어 트리거 에서 1 과 열 3 의 열 값 이 수정 되 었 는 지 확인 해 야 하 는 IF 자 구 는: IF (COLUMNS UPDATED () & (1 + 4) < > 0 입 니 다.
주의: WITH ENCRYPTION 옵션 을 사용 할 때 두 가 지 를 주의해 야 합 니 다. 하 나 는 원본 트리거 의 파일 을 잃 어 버 리 면 syscoments 표 에서 암호 화 된 텍스트 를 다시 저장 할 수 없습니다. 다른 하 나 는 텍스트 암호 화 후 데이터 베 이 스 를 새 버 전 으로 업그레이드 할 때 수정 할 수 없고 새 버 전 으로 다시 저장 할 수 없습니다. 즉, 트리거 텍스트 를 수정 할 수 있 으 면 함부로 수정 하지 마 십시오.암호 화
【 예 】 트리거 를 만 들 고 학생 기록 을 추가 할 때 정 보 를 인쇄 합 니 다.
IF EXISTS(SELECT name FROM sysobjects where name='stu_tr' and type='TR' )
DROP TRIGGER stu_tr
GO
CREATE TRIGGER stu_tr ON dbo.student
FOR INSERT
AS
PRINT ' '
GO
INSERT dbo.student VALUES('CC',' ','C1',20)
GO
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.