INSERT 트리거
이제까지의 기본 지식을 염두에 두고 지원되는 각 트리거 유형과 차이점을 살펴보겠습니다.
INSERT 트리거는 INSERT 문이 실행되기 전이나 후에 실행됩니다. 다음 사항을 알아야 합니다:
1. INSERT 트리거 코드에서 NEW라는 가상 테이블을 참조하여 삽입된 행에 액세스할 수 있습니다.
2 . BEFORE INSERT 트리거에서는 NEW의 값을 업데이트할 수도 있습니다(삽입된 값을 변경할 수 있음).
3 AUTO_INCREMENT 열의 경우 NEW는 INSERT가 실행되기 전에 0을 포함하고 INSERT가 실행된 후에는 0을 포함합니다. 새로운 자동 생성 값이 실행됩니다.
여기에 예가 있습니다(실용적이고 유용한 예). AUTO_INCREMENT 열에는 MySQL이 자동으로 할당한 값이 있습니다. 새로 생성된 값을 결정하는 방법이 있지만 더 좋은 방법은 다음과 같습니다.
입력:
create trigger neworder after insert on orders for each row select new .order_num;
분석: 이 코드는 AFTER INSERT ON 주문 실행을 따르는 neworder라는 트리거를 생성합니다. 주문 테이블에 새 주문을 삽입하면 MySQL은 새 주문 번호를 생성하고 이를 order_num에 저장합니다. 트리거는 NEW.order_num에서 이 값을 가져와서 반환합니다. BEFORE INSERT 문이 실행되기 전에 새 order_num이 생성되지 않았기 때문에 이 트리거는 AFTER INSERT를 실행해야 합니다. 이 트리거를 사용하면 주문에 삽입될 때마다 항상 새 주문 번호가 반환됩니다.
이 트리거를 테스트하려면 다음과 같이 새 줄을 삽입해 보세요.
입력:
insert into orders(order_date,cust_id) values(now(),10001);
출력:
분석: 주문에는 3개의 열이 포함됩니다. order_date 및 cust_id를 제공해야 하며 order_num은 MySQL에 의해 자동으로 생성되며 이제 order_num이 자동으로 반환됩니다.
이전 또는 이후? 일반적으로 BEFORE는 데이터 유효성 검사 및 정제에 사용됩니다(목적은 테이블에 삽입된 데이터가 실제로 필요한 데이터인지 확인하는 것입니다). 이 팁은 UPDATE 트리거에도 적용됩니다.
[관련 추천]
🎜>5.보존 지점 사용 및 기본 커밋 동작 변경에 대한 MySQL 트랜잭션 세부 설명
위 내용은 MySQL의 삽입 트리거(insert)에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!