트리거는 데이터베이스에서 특별한 이벤트가 발생할 때마다 자동으로 호출되는 데이터베이스의 저장 프로시저입니다. 예를 들어 지정된 테이블에 행이 삽입되거나 특정 테이블 열이 업데이트될 때 트리거가 호출될 수 있습니다. 간단히 말해서 트리거는 다음과 같은 항목의 모음입니다. SQL 시스템 메모리에 저장된 특정 이름을 가진 명령문입니다. 이는 데이터베이스 서버 이벤트에 대한 응답으로 자동으로 호출되는 특정 클래스의 저장 프로시저에 속합니다. 모든 트리거에는 테이블이 연결되어 있습니다.
트리거는 저장 프로시저와 달리 직접 호출할 수 없기 때문에 특수 프로시저라고 합니다. 트리거는 테이블에 대한 데이터 수정 이벤트가 발생할 때마다 자동으로 호출됩니다. 이것이 트리거와 프로시저의 주요 차이점입니다. 반면에 저장 프로시저는 직접 호출해야 합니다.
다음은 트리거와 저장 프로시저 간의 주요 차이점입니다.
- 트리거는 수동으로 호출하거나 실행할 수 없습니다.
- 트리거가 매개변수를 수신할 가능성은 없습니다.
- 트리거 내에서는 트랜잭션을 커밋하거나 롤백할 수 없습니다.
통사론:
트리거 생성 [trigger_name]
[이전 | 후에]
끼워 넣다
[테이블_이름]에
[각 행마다]
[트리거_바디]
구문 설명
- 트리거 [트리거_이름] 생성: 기존 트리거를 생성하거나 해당 트리거_이름으로 대체합니다.
- [이전 | after]: 트리거가 실행되는 시기를 지정합니다.
- insert : DML 작업을 지정합니다.
- On [table_name]: 트리거와 연결된 테이블의 이름을 지정합니다.
- [각 행에 대해]: 행 수준 트리거를 지정합니다. 즉, 영향을 받는 각 행에 대해 트리거가 실행됩니다.
- [trigger_body]: 트리거가 실행될 때 수행되는 작업을 제공합니다.
트리거를 사용하는 이유는 무엇입니까?
바람직한 특정 시나리오에서 일부 작업을 자동으로 수행해야 하는 경우 트리거가 유용합니다. 예를 들어, 끊임없이 변화하는 테이블의 변경 빈도와 시기를 알아야 합니다. 이러한 경우 기본 테이블이 변경되면 필요한 데이터를 다른 테이블에 삽입하는 트리거를 만들 수 있습니다.
SQL Server의 다양한 트리거 유형
트리거에는 두 가지 범주가 있습니다.
- DDL 트리거
- DML 트리거
- 로그온 트리거
DDL 트리거
Create_table, Create_view, drop_table, Drop_view 및 Alter_table과 같은 DDL(데이터 정의 언어) 명령 이벤트로 인해 DDL 트리거가 활성화됩니다.
SQL 서버
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
산출:
DML 트리거
데이터는 DML 트리거를 시작하는 삽입, 업데이트 및 삭제로 시작되는 DML(조작 언어) 명령 이벤트를 사용합니다. insert_table, update_view 및 delete_table에 해당합니다.
SQL 서버
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
산출:
로그온 트리거
로그온 트리거는 LOGON 이벤트에 대한 응답으로 실행됩니다. 로깅 인증 프로세스가 완료된 후 사용자 세션이 설정되기 전에 SQL Server 인스턴스로 사용자 세션이 생성되면 LOGON 이벤트가 발생합니다. 결과적으로 PRINT 문 메시지와 트리거에 의해 생성된 오류는 모두 SQL Server 오류 로그에 표시됩니다. 인증 오류로 인해 로그온 트리거가 사용되지 않습니다. 이러한 트리거는 로그인 활동을 추적하거나 서버 세션을 감사 및 관리하기 위해 특정 로그인이 가질 수 있는 세션 수에 대한 제한을 설정하는 데 사용할 수 있습니다.
SQL Server 쇼는 어떻게 트리거됩니까?
표시 또는 목록 트리거는 테이블이 많은 데이터베이스가 있을 때 유용합니다. 이 쿼리는 여러 데이터베이스에서 테이블 이름이 동일한 경우 매우 유용합니다. 아래 명령을 사용하면 SQL Server에서 사용 가능한 모든 트리거 목록을 볼 수 있습니다.
통사론:
FROM sys.triggers, SELECT 이름, is_instead_of_trigger
IF 유형 = 'TR';
SQL Server Management Studio를 사용하면 특정 테이블에 사용할 수 있는 모든 트리거를 매우 간단하게 표시하거나 나열할 수 있습니다. 다음 단계는 이를 달성하는 데 도움이 됩니다.
로 이동 데이터베이스 메뉴에서 원하는 데이터베이스를 선택한 다음 확장합니다.
- 선택 테이블 메뉴를 확장해 보세요.
- 특정 테이블을 선택하고 확장합니다.
여기서 다양한 옵션을 얻을 수 있습니다. 우리가 선택할 때 트리거 옵션을 선택하면 이 표에 사용 가능한 모든 트리거가 표시됩니다.
트리거 이전 및 이후
BEFORE 트리거는 트리거 문이 실행되기 전에 트리거 작업을 실행합니다. AFTER 트리거는 트리거 문이 실행된 후 트리거 작업을 실행합니다.
예
학생 성적 평가가 기록되는 학생 보고서 데이터베이스가 제공됩니다. 이러한 스키마에서는 레코드가 삽입될 때마다 지정된 마크의 합계와 백분율이 자동으로 삽입되도록 트리거를 만듭니다.
여기서는 레코드가 삽입되기 전에 트리거가 호출되므로 BEFORE 태그를 사용할 수 있습니다.
데이터베이스 스키마를 가정해 보겠습니다.
질문
mysql>>desc 학생;>
문제 설명에 대한 SQL 트리거입니다.
위의 SQL 문은 학생 데이터베이스에 과목 표시가 입력될 때마다 이 데이터를 데이터베이스에 삽입하기 전에 트리거가 두 값을 계산하여 입력된 값과 함께 삽입하는 트리거를 생성합니다. 즉.
산출
이러한 방식으로 데이터베이스에서 트리거를 생성하고 실행할 수 있습니다.
트리거의 장점
SQL Server에서 트리거를 사용하면 다음과 같은 이점이 있습니다.
- 데이터베이스 개체 규칙은 트리거에 의해 설정되며, 규칙이 충족되지 않으면 변경 내용이 취소됩니다.
- 트리거는 데이터를 검사하고 필요한 경우 변경합니다.
- 트리거 덕분에 데이터 무결성을 강화할 수 있습니다.
- 데이터는 삽입 또는 업데이트되기 전에 트리거를 사용하여 검증됩니다.
- 트리거는 기록 로그를 유지하는 데 도움이 됩니다.
- 트리거는 실행될 때마다 컴파일할 필요가 없기 때문에 SQL 쿼리의 성능을 향상시킵니다.
- 클라이언트측 코드는 트리거에 의해 줄어들어 시간과 인력이 절약됩니다.
- 트리거 유지 관리는 간단합니다.
불리 트리거 수
SQL Server에서 트리거를 사용할 때의 단점은 다음과 같습니다.
종교 목록
- 트리거만 확장 검증 사용을 허용합니다.
- 자동 트리거가 사용되며 사용자는 트리거가 실행되는 시기를 알지 못합니다. 결과적으로 데이터베이스 계층에서 발생하는 문제를 해결하기가 어렵습니다.
- 트리거로 인해 데이터베이스 서버의 오버헤드가 증가할 수 있습니다.
- 단일 CREATE TRIGGER 문에서 INSERT 및 UPDATE와 같은 여러 사용자 작업에 대해 동일한 트리거 작업을 지정할 수 있습니다.
- 트리거 생성에는 현재 데이터베이스만 사용할 수 있지만 데이터베이스 외부 개체에 대한 참조는 계속 만들 수 있습니다.
자주 묻는 질문
Q1: SQL 트리거란 무엇입니까?
답변:
SQL 트리거는 테이블과 연결되어 해당 테이블에서 특정 이벤트가 발생할 때 SQL 문 집합을 자동으로 실행하는 데이터베이스 개체입니다. 트리거는 비즈니스 규칙을 적용하고, 데이터 무결성을 유지하고, 데이터베이스 내 특정 작업을 자동화하는 데 사용됩니다. 테이블의 데이터 삽입, 업데이트 또는 삭제와 같은 다양한 이벤트에 의해 트리거될 수 있으며 해당 이벤트를 기반으로 추가 작업을 수행할 수 있습니다.
Q2: SQL 트리거는 어떻게 작동합니까?
답변:
SQL 트리거는 SQL 문을 사용하여 정의되며 특정 테이블과 연결됩니다. 해당 테이블에서 정의된 트리거 이벤트(예: INSERT, UPDATE, DELETE)가 발생하면 관련 트리거 코드가 자동으로 실행됩니다. 트리거 코드는 동일한 테이블이나 다른 테이블의 데이터를 조작하거나 제약 조건을 적용하거나 다른 작업을 수행할 수 있는 SQL 문으로 구성될 수 있습니다. 트리거는 트랜잭션 범위 내에서 실행되며 트리거 이벤트 전후에 실행되도록 정의할 수 있습니다.
Q3: SQL 트리거를 사용하면 어떤 이점이 있습니까?
답변:
SQL 트리거를 사용하면 다음과 같은 이점이 있습니다.
데이터 무결성: 트리거를 사용하면 데이터베이스 수준에서 복잡한 비즈니스 규칙과 제약 조건을 적용하여 데이터가 일관되고 정확하게 유지되도록 할 수 있습니다.
자동화: 트리거는 지정된 이벤트가 발생할 때마다 미리 정의된 작업을 실행하여 반복적이거나 복잡한 작업을 자동화할 수 있습니다. 이렇게 하면 수동 개입의 필요성이 줄어들고 효율성이 향상됩니다.
감사 추적: 트리거를 사용하면 별도의 감사 테이블에 수정 내용을 기록하는 등 데이터 변경 사항을 추적할 수 있습니다. 이는 데이터 변경 기록을 감사하고 유지하는 데 도움이 됩니다.
데이터 유효성 검사: 트리거는 데이터를 삽입, 업데이트 또는 삭제하기 전에 데이터에 대한 추가 유효성 검사를 수행하여 유효하고 규격에 맞는 데이터만 데이터베이스에 저장되도록 할 수 있습니다.