주문 총액을 알려주는 방아쇠를 만들려고합니다. 특정 주문에 대한 여러 행을 포함하는 ORNG_ORD_LINE 테이블이 있습니다. ORNG_ORDER 테이블에서 ORNG_ORD_LINE에 동일한 주문 번호를 가진 상품의 총 비용을 표시하는 열을 보유하고 싶습니다.트리거를 생성하여 다른 테이블의 열을 업데이트하십시오.
이 트리거의 목적은 Ord_Amount 열의 ORNG_ORDER 테이블을 ORNG_ORD_LINE 테이블에 저장된 모든 Ord_Num 개별 라인 항목의 계산 된 합계로 업데이트하는 것입니다. 따라서 Ord_Num 20002를 각각 $ 50의 세 줄짜리로 삽입하거나 업데이트하면 Ord_Amount 열은 $ 150을 읽어야합니다. 동일한 주문 번호의 행을 새 금액으로 업데이트하거나 삽입하거나 행을 삭제하면 Ord_Amount가 업데이트 된 총액을 반영하여 값을 수정해야합니다.
CREATE OR REPLACE TRIGGER ORNG_ORD_LINE_TOTAL_TRIGGER
FOR UPDATE OR INSERT ON ORNG_ORD_LINE
COMPOUND TRIGGER
BEFORE EACH ROW IS
BEGIN
:NEW.Ord_Line_Total := :NEW.Ord_Line_Price * :NEW.Ord_Line_Quantity;
END BEFORE EACH ROW;
END ORNG_ORD_LINE_TOTAL_TRIGGER;
/
이 나에게 INV_LINE 테이블에서 내 송장의 줄에 총을 제공 : 다음과 같이 주문 라인 당 총 금액을 얻기를위한
내 트리거입니다. 전체 주문에 대한 합계를 얻기 위해 동일한 송장 번호가 할당 된 각 개별 라인을 추가하는 트리거를 만들고이 번호를 ORNG_ORDER 테이블의 Ord_Amount 열을 업데이트하도록합니다. 또한 ORNG_ORD_LINE에서 행을 삭제할 경우 트리거가 변경 사항을 반영하는 ORNG_ORDER의 총계를 업데이트하는지 확인하고 싶습니다. 그래서,
CREATE OR REPLACE TRIGGER ORNG_ORDER_TOTAL_TRIGGER
AFTER INSERT OR UPDATE ON ORNG_ORD_LINE
DECLARE
V_ORD_LINE_TOTAL DEC := 0
V_ORD_NUM INTEGER := 0
BEGIN
--1) Get the Order Number
SELECT :NEW.Ord_Num INTO V_ORD_NUM
FROM ORNG_ORDER
WHERE ORNG_ORDER.Ord_Num = :NEW.Ord_Num;
--2) Get the sum of all lines with the matching order number and set the
variable with that value
V_ORD_LINE_TOTAL :=
SELECT SUM(Ord_Line_Total)
FROM ORNG_ORD_LINE
WHERE Ord_Num = :NEW.Ord_Num;
--3) Write updated total to the ORNG_ORDER tables
UPDATE ORNG_ORDER
SET Ord_Amount = V_ORD_LINE_TOTAL
WHERE Ord_Num = :NEW.Ord_Num;
END ORNG_ORDER_TOTAL_TRIGGER;
/
나는 여전히이의 묘리를 터득하기 위해 노력하고있어 : 이것은 내가 지금까지 가지고있는,하지만 난 구문과 몇 가지 문제가 있어요, 나는 누군가가 나에게 그것을 해결하는 데 도움 수있는 기대했다 어떤 도움, 그리고 내가 뭘 잘못하고 있는지에 대한 설명은 크게 감사하겠습니다.
누구있어? 부디? – jjmil03