小さなトリガーを作成するだけです。このトリガーでやりたいことは、顧客が一度に 10 件の注文しか発注テーブルに入れられないようにすることです。なぜ私のクライアントがこれを望んでいるのかを聞かないでください。私にはばかげているように思えます。
しかし、基本的にトリガーは発注テーブルにあります。現在、customer_ID で DISTINCT COUNT を選択し、それを v_count VARIABLE に配置しています。
IF v_count < 10 INSERT INTO placed_order
ELSE
DBMS_OUTPUT.PUT_LINE ('you have 10 or more orders processing please wait')
END if
END
これはコードの基本的な要点ですが、実行されません。必要に応じて完全なコードを表示できますか?
これがコードです - 申し訳ありませんが、SQLFiddle の使用方法が今のところわかりません。
CREATE OR REPLACE TRIGGER trg_order_limit
BEFORE INSERT
ON placed_order
FOR EACH ROW
DECLARE
v_count number;
BEGIN
SELECT COUNT(DISTINCT FK1_customer_id) FROM placed_order into v_count;
if v_count < 10 then
INSERT INTO placed_order
(order_id, order_date, delivery_date, FK1_customer_id, FK2_employee_id, FK3_Order_type_id)
VALUES
(:NEW.order_id, :NEW.order_date, :NEW.delivery_date, :NEW.FK1_customer_id, :NEW.FK2employee_id, :NEW.FK3_order_type_id);
ELSE
v_count > 10 then
DBMS_OUTPUT.PUT_LINE('You currently have 10 or more orders processing.');
end if;
end;
Oracle でスクリプトを実行すると、4 行目でエラーが発生します: PL/SQL: ORA-00933: SQL コマンドが正しく終了しませんでした
どうもありがとうリチャード