mysql 트리거 예제

트리거는 트랜잭션 시작, 커밋 또는 ROLLBACK과 같이 트랜잭션을 명시적으로 또는 암시적으로 시작하거나 종료하는 문을 사용할 수 없습니다. (SAVEPOINT로롤백은 트랜잭션을 종료하지 않으므로 허용됩니다.) 트리거 파일을 백업 폴더 또는 원하는 다른 위치에 복사하여 MySQL 트리거를 백업할 수 있습니다. 또한 트리거 폴더를 VCS 리포지토리로 처리하고 변경될 때마다 백업을 수행할 수도 있습니다. 트랜잭션 테이블의 경우 명령문이 실패하면 명령문에 의해 수행되는 모든 변경 내용이 롤백됩니다. 트리거가 실패하면 문이 실패하므로 트리거 오류로 인해 롤백도 발생합니다. 비트랜잭션 테이블의 경우 이러한 롤백을 수행할 수 없으므로 명령문이 실패하더라도 오류가 발생하기 전에 수행된 모든 변경 내용은 계속 적용됩니다. 트리거를 삭제하려면 DROP TRIGGER 문을 사용합니다. 트리거가 기본 스키마에 없는 경우 스키마 이름을 지정해야 합니다: 다음 예제에서는 emp_details 테이블에 새 레코드를 삽입하기 전에 FIRST_NAME, LAST_NAME, JOB_ID 및 – 앞에 공백이 있는 경우 FIRST_NAME, LAST_NAME, TRIM() 함수는 해당 기능을 제거합니다. – JOB_ID의 값은 UPPER() 함수에 의해 대문자로 변환됩니다. 다음은 트리거 코드입니다 : 이 자습서를 진행하기 전에 먼저 MySQL에서 SQL 트리거 및 트리거 구현에 대한 소개를 따라야합니다. 각 행에 대해 다음 문은 트리거 본문을 정의합니다. 즉, 트리거가 활성화될 때마다 실행되는 명령문이며, 트리거링 이벤트의 영향을 받는 각 행에 대해 한 번씩 발생합니다.

이 예제에서 트리거 본문은 양 열에 삽입된 값을 사용자 변수에 축적하는 간단한 SET입니다. 문은 열을 NEW.amount로 참조하여 “새 행에 삽입할 양 열의 값”을 의미합니다. 1단계: 학생을 예로 들어 테이블을 만들고 레코드를 삽입합니다. 그런 다음 직원 테이블을 변경하기 전에 호출되는 업데이트 이전 트리거를 만듭니다. BEFORE 키워드는 트리거 작업 시간을 나타냅니다. 이 경우 각 행이 테이블에 삽입되기 전에 트리거가 활성화됩니다. 여기서 허용되는 다른 키워드는 AFTER입니다. 블로그 테이블에서 INSERT 후 및 업데이트 후 두 개의 트리거가 필요합니다. 삭제된 필드를 true로 설정하여 게시물이 삭제된 것으로 표시되므로 DELETE 트리거를 정의할 필요가 없습니다. INSERT 후/삽입 전: 삽입 쿼리가 실행되기 전또는 실행되기 전에 트리거를 가리킵니다. MySQL에서 직원 테이블의 변경 내용을 기록하기 위한 트리거를 만들어 보겠습니다. AFTER 트리거는 BEFORE 트리거가 있고 행 작업이 성공적으로 실행되는 경우에만 실행됩니다.

저장 프로시저를 별도로 정의한 다음 간단한 CALL 문을 사용하여 트리거에서 호출하는 것이 더 쉬울 수 있습니다. 이는 여러 트리거 내에서 동일한 코드를 실행하려는 경우에도 유리합니다. 위의 예는 INSERT 및 trigger_time이 이전과 같이 trigger_event가 있는 트리거의 예입니다. 블로깅 응용 프로그램에 대한 작은 예제 데이터베이스를 만듭니다. 두 개의 테이블이 필요합니다: INSERT용으로 만든 트리거는 NEW 키워드를 사용하는 반면 DELETE용 으로 만들어진 트리거는 OLD 키워드를 사용하여 영향을 받는 행에 액세스합니다. UPDATE 트리거에서 OLD는 행을 변경하기 전에 행에 액세스하는 데 사용할 수 있으며 NEW는 행을 변경한 후 행에 액세스하여 행에 액세스할 수 있습니다. 이 트리거를 만들고 다음 명령으로 현재 데이터베이스에 있는 모든 트리거를 살펴보겠습니다: MySQL에서 트리거를 만들 수도 있습니다.

Comments are closed.