0
私は在庫の在庫を更新するためのトリガーを作成したいと思います。顧客の注文した在庫数量と数量は、2つの異なるテーブルに表示されます。私は両方にどのように参加しますか?テーブル参加のトリガー
CREATE OR REPLACE
TRIGGER UPDATE_QUANTITY_TRIGGER
AFTER insert ON SALE_ORDER
FOR EACH ROW
BEGIN
update product values
(:old.product_id,
:old.product_name,
:old.description,
quantity_on_stock-s.quantity,
:old.minimal_quantity,
:old.unit_price,
:old.product_type_id);
from product, sale_order s
where product.product_id=s.product_id;
END;
OR
CREATE OR REPLACE
TRIGGER UPDATE_QUANTITY_TRIGGER
AFTER insert ON SALE_ORDER
FOR EACH ROW
BEGIN
update product set
p.quantity_on_stock= p.quantity_on_stock-s.quantity;
from product p , sale_order s
where p.product_id=s.product_id;
END;
sale_order
表には、列sale_no
、quantity
、およびproduct_id
を持っています。
この更新構文は、Oracle、トリガーまたはプレーンSQLでは無効です。 (サブクエリなしで)更新ステートメントに参加することはできません。 ':old'と':new'疑似コードの行の値をすでに持っているとき、なぜあなたは 'sale_order'に参加することを望みませんか?同時トランザクションが衝突する可能性があるため、このようなバランスを維持しようとすることは、マルチユーザ環境では実際には機能しません。 –
私はちょうどプロダクトをアップデートしたいと思う、使用しないで回避するべきである:old? –