MySQL에서 트리거를 사용하는 방법은 무엇입니까? MySQL 트리거에 대한 자세한 설명

MySQL에서 트리거를 사용하는 방법은 무엇입니까? MySQL 트리거에 대한 자세한 설명

MySQL은 트리거 사용을 지원하는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. 트리거는 이벤트 기반 프로그래밍 모델과 유사하게 특정 테이블에서 일련의 SQL 문을 실행할 수 있는 MySQL 의 특수 저장 프로시저 입니다. 트리거를 사용하여 복잡한 비즈니스 논리를 구현하고 데이터베이스 성능과 안정성을 향상하세요. 이 기사에서는 MySQL 에서 트리거를 사용하는 방법을 자세히 소개합니다 .

1. 트리거 생성

MySQL 에서는 CREATE TRIGGER 문을 사용하여 트리거를 생성할 수 있습니다 . CREATE TRIGGER 문의 기본 구문은 다음과 같습니다.

CREATE TRIGGER Trigger_name Trigger_time Trigger_event ON table_name FOR EACH ROW Trigger_body;

그 중, Trigger_name 은 트리거의 이름이고, Trigger_time 은 트리거의 실행 시간( BEFORE 또는 AFTER 일 수 있음 ) , Trigger_event 는 트리거의 이벤트( INSERT , UPDATE 또는 DELETE 일 수 있음 ), table_name 은 트리거의 이름이다. 트리거가 위치한 테이블, Trigger_body 는 트리거입니다. 서버의 SQL .

예를 들어 다음 트리거는 직원 테이블에 BEFORE INSERT 트리거를 생성하여 새 직원이 합류할 때 입력 시간을 현재 시간으로 자동 설정합니다.

각 행에 대해 직원을 삽입하기 전에 set_join_date 트리거를 생성하세요.

시작하다

SET NEW.join_date = NOW();

끝;

2. 트리거 실행 시간

MySQL 에서 트리거는 INSERT , UPDATE 또는 DELETE 이벤트 전후에 실행될 수 있습니다. 트리거의 실행 시간은 BEFORE 또는 AFTER 일 수 있습니다 .

트리거 전

BEFORE 트리거는 INSERT , UPDATE 또는 DELETE 작업을 수행하기 전에 실행되며 데이터베이스에서 일부 데이터 전처리 및 확인을 구현할 수 있습니다.

예를 들어, 다음 트리거는 직원 테이블에 BEFORE UPDATE 트리거를 생성합니다 . 직원의 급여가 10,000 보다 크면 급여는 10,000 으로 설정됩니다 .

각 행에 대해 직원을 업데이트하기 전에 한도_급여 트리거를 생성하세요.

시작하다

신규 급여 > 10000이면

SET NEW.salary = 10000;

종료하면;

끝;

트리거 이후

AFTER 트리거는 INSERT , UPDATE 또는 DELETE 작업을 수행한 후 실행되며 데이터베이스에서 일부 데이터 사후 처리 및 계산을 구현할 수 있습니다.

예를 들어 다음 트리거는 주문 테이블에 AFTER INSERT 트리거를 생성하여 새 주문이 추가될 때 제품의 재고를 자동으로 업데이트합니다.

각 행에 대한 주문 삽입 후 TRIGGER update_inventory 생성

시작하다

업데이트 제품 세트 재고 = 재고 - NEW.Quantity WHERE id = NEW.product_id;

끝;

3. 트리거 이벤트

MySQL 에서는 트리거가 INSERT , UPDATE 또는 DELETE 이벤트에서 실행될 수 있습니다. INSERT 이벤트는 새로운 레코드가 삽입될 때 발생하고, UPDATE 이벤트는 레코드가 업데이트될 때 발생하며, DELETE 이벤트는 레코드가 삭제될 때 발생합니다. 트리거는 여러 이벤트에서 실행될 수 있습니다.

예를 들어, 다음 트리거는 직원 테이블에 BEFORE INSERT 또는 UPDATE 트리거를 생성 하고 직원의 급여가 10,000 보다 크면 급여가 10,000 으로 설정됩니다 .

각 행에 대해 직원을 삽입하거나 업데이트하기 전에 TRIGGERlimit_salary를 생성하세요.

시작하다

신규 급여 > 10000이면

SET NEW.salary = 10000;

종료하면;

끝;

4. 트리거 실행 조건

MySQL 에서는 IF 문을 사용하여 트리거의 실행 조건을 제어할 수 있습니다. IF 문은 조건에 따라 트리거에서 SQL 문을 실행할지 여부를 결정할 수 있습니다 .

예를 들어, 다음 트리거는 직원 테이블에 BEFORE INSERT 트리거를 생성합니다 . 직원의 급여가 5,000 미만인 경우 입사 시간은 현재 시간으로 설정됩니다.

각 행에 대해 직원을 삽입하기 전에 set_join_date 트리거를 생성하세요.

시작하다

신규 급여 < 5000이면

SET NEW.join_date = NOW();

종료하면;

끝;

5. 트리거 프로세스 제어

MySQL 에서 트리거는 흐름 제어 문을 사용하여 IF 문, CASE 문, WHILE 문, LOOP 문 등과 같은 프로그램의 실행 흐름을 제어할 수 있습니다. 흐름 제어 문은 개발자가 보다 복잡한 비즈니스 논리를 구현하는 데 도움이 될 수 있습니다.

예를 들어, 다음 트리거는 직원 테이블에 BEFORE INSERT 트리거를 생성합니다 . 직원의 급여가 5,000 미만인 경우 입사 시간은 현재 시간으로 설정되고, 그렇지 않은 경우 입사 시간은 한 달 전 시간으로 설정됩니다.

각 행에 대해 직원을 삽입하기 전에 set_join_date 트리거를 생성하세요.

시작하다

신규 급여 < 5000이면

SET NEW.join_date = NOW();

또 다른

SET NEW.join_date = DATE_SUB(NOW(), INTERVAL 1 MONTH);

종료하면;

끝;

6. 트리거 최적화

트리거는 개발자가 데이터베이스 성능과 안정성을 최적화하는 데 도움이 될 수 있습니다. 다음은 몇 가지 트리거 최적화 팁입니다.

트리거 실행 시간을 최소화하고 트리거가 커지고 복잡해지는 것을 방지합니다.

복잡한 SQL 문으로 인해 성능이 저하되므로 트리거에서 복잡한 SQL 문을 실행하지 마세요 .

트리거 실행 조건과 흐름 제어 문을 사용하여 실행 흐름을 제어하고 불필요한 트리거 실행을 방지합니다.

여러 SQL 문으로 인해 성능이 저하되므로 트리거에서 여러 SQL 문을 실행하지 마세요.

7. 요약

트리거는 이벤트 기반 프로그래밍 모델과 유사하게 특정 테이블에서 일련의 SQL 문을 실행할 수 있는 MySQL 의 특수 저장 프로시저 입니다. 이 기사에서는 MySQL 에서 트리거를 생성하는 방법 , 트리거 실행 시간 제어, 이벤트 및 프로세스 제어, 트리거 최적화 등을 소개합니다. 개발자는 필요와 시나리오에 따라 트리거를 유연하게 사용하여 MySQL 데이터베이스 의 효율성과 안정성을 향상시킬 수 있습니다.

추천

출처blog.csdn.net/thanklife/article/details/131964017