오라클 트리거 delete 예제

안녕하세요, 아래 쿼리를 수행: 삽입 하기 전에 트리거 리브를 만들거나 바꾸기 또는 ap_supplier_sites_all에 업데이트 각 행 선언 토토오버 번호 (10); 토토버 시작 := 0; select count(1) to to to to to to to to to to to to to to to to to aap_supplier_sites_all.attribute4 = :NEW.attribute4; — 보류 중인 주문이 있는지 여부를 확인합니다 IF (토토버 > 0) 다음 RAISE_APPLICATION_ERROR (-20000,보류 중인_orders | | `이 항목에 대 한 보류 중인 주문. 먼저 주문을 완료하거나 취소한 다음 삭제합니다.`); IF 종료; 종료; 특성4가 테이블에 있는 경우 삽입하거나 업데이트하지 않으려고 합니다. BR, 보류 중인 순서가 발견되면, 우리는 항목을 삭제 할 수 없습니다 우리는 항목을 삭제할 수 없습니다 및 item_details에 삭제 작업을 제한하기 위해 삭제 트리거 전에 응용 프로그램 오류를 발생합니다 다음 item_details에 삭제 트리거 « trg_before_item_delete »를 만들기 전에 생성 테이블. 이 예에서 사용자가 medical_bills 행을 삭제한 경우, 삭제된 행은 테이블 medical_bills에서 삭제 트리거를 삭제한 후 medical_bills_history에 삽입됩니다. 실행. 실제 시나리오에서는 주로 다음과 같은 용도로 사용됩니다: NEW 값(또는 이름을 바꾼 NEW_BUFFER)은 삽입 및 업데이트 할 때만 사용할 수 있습니다. 삭제하려면 OLD(OLD_BUFFER)를 사용해야 합니다. 따라서 트리거가 될 것입니다 : 성공적인 실행시이 트리거를 사용하면 보기에서 DELETE DML을 실행할 수 있습니다. 이 보기에서 DELETE DML을 실행하면 비데이터 특성으로 인해 오류가 반환됩니다. 따라서이 보기에서 DELETE DML을 수행 하는 유일한 방법은 트리거 대신 사용 하는 것입니다.

신속하게 만들 수 있습니다. 그런 다음 테이블 medical_bills에 « trg_after_delete_bill » 트리거를 만듭니다. `HBP000`에서 다른 것으로 field1을 업데이트하는 코드를 수용하기 위해 트리거 내부에 논리를 추가해야 할 수 있습니다. 이 예제에서는 트랜잭션 테이블에 각 삭제 후 기록 테이블에 행을 삽입 하는 트리거를 만들었습니다. 사용자가 medical_bills 데이터를 삭제할 때마다 데이터는 DELETE 후 트리거에 의해 medical_bills_history에 삽입됩니다. PENDING 순서가 있는 item_details에서 행을 삭제하고 트리거에 의해 발생한 오류를 관찰합니다. 이것은 삭제 대신 트리거를 만드는 적절한 방법을 가르치기위한 매우 간단한 예입니다. 이 빠른 블로그를 즐겼기를 바랍니다. 그래서 여기에 우리는 환자 테이블에 삭제 트리거 전에 의해 데이터를 삭제합니다.

이 예제에서는 이전에 만든 VW_RebellionRider 뷰를 다시 사용하고 지금까지 이 대신 트리거 시리즈에서 일관되게 사용했습니다. 이 문은 Delete 작업이 실행된 후 Oracle에서 이 트리거를 실행되도록 지정합니다. 그런 다음 우리는 trading_details 테이블의 몇 행을 삭제하고 trading_details 및 trading_action_event 테이블의 값을 관찰할 것입니다. 이 예제에서는 두 개의 테이블 환자와 patient_details가 있습니다. patient_details질병, 닥터 이름 등과 같은 환자의 값을 포함하는 동안 환자는 기본적인 세부사항을 포함합니다. 둘 이상의 DML 작업 유형이 트리거를 발생시킬 수 있는 경우(예: 삽입 또는 삭제 또는 Emp_tab의 업데이트) 트리거 본문은 조건부 조건자를 삽입, 삭제 및 업데이트하여 트리거를 발생시키는 명령문 유형을 확인할 수 있습니다. 2개의 트리거로 분리합니다. 하나는 삭제용이고 다른 하나는 삽입 업데이트용입니다. 이 예제에서는 두 개의 테이블 item_details 및 order_details가 있습니다.

테이블 order_details item_details 에서 항목의 구매 주문값포함 합니다. 이제 사용자가 item_details에서 항목을 삭제하려고 할 때마다 해당 항목에 대해 보류 중인 주문이 있는지 여부를 확인해야 합니다. 이 예제에서는 두 개의 테이블 환자와 patient_details가 있습니다. patient_detailsdes, 의사 이름 등과 같은 환자의 값을 포함하는 동안 환자는 기본적인 세부 사항을 포함합니다.