create or replace TRIGGER TRG_DecreaseQuantity
AFTER INSERT
ON V_SALE FOR EACH ROW
BEGIN
UPDATE VEHICLE
SET V.V_QUANTITY=(SELECT CASE
WHEN V.V_QUANTITY >= S.QUANTITY AND
V.VEHICLE_ID = S.VEHICLE_ID_FK
THEN V.V_QUANTITY = V.V_QUANTITY-S.QUANTITY
WHEN V.V_QUANTITY < S.QUANTITY
THEN V.V_QUANTITY = S.QUANTITY
FROM VEHICLE V,
V_SALE S
WHERE V.VEHICLE_ID=S.VEHICLE_ID_FK
)
WHERE V.VEHICLE_ID = :NEW.VEHICLE_ID_FK;
END;
データベースがautoGallery
あり、その中にテーブルがあります。制御する必要があるV_SALE
との 2 つのテーブルがあります。VEHICLE
車両を販売するときは、車両の数を制御してから、数を減らすかどうかを制御したいと考えています。
Vehicle(
Vehicle_ID Primary key,
V_QUANTITY
...
)
V_SALE(
VEHICLE_ID_FK FOREIGN KEY,
QUANTITY
...
)
次のエラーが発生しました。
Compilation failed, line 5 (16:03:48) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PL/SQL: ORA-00905: missing keyword
Compilation failed, line 2 (16:03:48) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PL/SQL: SQL Statement ignored