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 중국어 웹사이트의 기타 관련 기사를 참조하세요!