집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 삭제 트리거(삭제) 사용법에 대한 자세한 설명
DELETE 트리거
트리거는 SQL 서버가 프로그래머와 데이터 분석가에게 데이터 무결성을 보장하기 위해 제공하는 메서드입니다. 이벤트는 프로그램에 의해 호출되거나 수동으로 시작되지 않고 이벤트에 의해 실행됩니다. 예를 들어 테이블이 실행될 때 활성화됩니다. 트리거는 데이터 무결성 제약 조건과 비즈니스 규칙을 적용하는 데 자주 사용됩니다. 트리거는 DBA_TRIGGERS 및 USER_TRIGGERS 데이터 사전에서 찾을 수 있습니다. SQL3 트리거는 데이터베이스를 수정하기 위해 시스템에서 자동으로 실행할 수 있는 명령문입니다.
권장되는 관련 mysql 비디오 자습서: "mysql 자습서"
트리거는 다른 테이블을 쿼리할 수 있으며 복잡한 SQL 문을 포함할 수 있습니다. 주로 복잡한 비즈니스 규칙이나 요구 사항을 준수하도록 하는 데 사용됩니다. 예를 들어 고객의 현재 계정 상태에 따라 새 주문을 삽입할 수 있는지 여부를 제어할 수 있습니다.
DELETE 트리거는 DELETE 문이 실행되기 전이나 후에 실행됩니다. 다음 두 가지 사항을 알아야 합니다.
1. DELETE 트리거 코드 내에서 OLD라는 가상 테이블을 참조하여 삭제된 행에 액세스할 수 있습니다.
2 OLD의 모든 값은 읽기 전용이며 업데이트할 수 없습니다. 다음 예에서는 OLD를 사용하여 삭제할 행을 아카이브 테이블에 저장하는 방법을 보여줍니다.
입력:
create trigger deleteorder before delete on orders for each row begin insert into archive_orders(order_num,order_date,cust_id) values(old.order_num,old.order_date,old.cust_id); end;
분석: 이 트리거는 주문이 삭제되기 전에 실행됩니다. INSERT 문을 사용하여 OLD(삭제할 주문)의 값을 archive_orders라는 아카이브 테이블에 저장합니다(실제로 이 예제를 사용하려면 주문과 동일한 열을 가진 archive_orders라는 테이블을 생성해야 합니다).
BEFORE DELETE 트리거(AFTER DELETE 트리거와 반대)를 사용하면 어떤 이유로든 주문을 보관할 수 없는 경우 DELETE 자체가 취소된다는 장점이 있습니다.
다중 문 트리거 보시다시피, 트리거 deleteorder는 BEGIN 및 END 문을 사용하여 트리거 본문을 표시합니다. 이 예에서는 이것이 필요하지 않지만 해가 되지는 않습니다. BEGIN END 블록을 사용하면 트리거가 여러 SQL 문(BEGIN END 블록에서 하나 옆에 하나씩)을 수용할 수 있다는 이점이 있습니다.
[관련 추천]
MySQL의 삽입 트리거(insert)에 대한 자세한 설명
위 내용은 MySQL 삭제 트리거(삭제) 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!