Stok stoğunu güncelleştirmek için bir tetikleyici oluşturmak istiyorum. Müşteri tarafından sipariş edilen stok ve miktardaki miktarım iki farklı masada. İkisine de nasıl katılırım?Tablo birleştirmeyle tetikleme
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;
VEYA
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
tablo sütunları sale_no
, quantity
ve product_id
sahiptir.
Bu güncelleştirme sözdizimi Oracle'da, bir tetikleyicide veya düz SQL'de geçerli değildir; Bir güncelleme tablosuna (alt sorgu olmadan) katılamazsınız. Neden zaten ": old" ve ": new" pseudorecords satırındaki değerlere sahip olduğunuzda 'sale_order' öğesine katılmıyorsunuz? Böyle bir dengeyi korumaya çalışmak, eşzamanlı işlemler çatışabileceğinden, çok kullanıcılı bir ortamda gerçekten işe yaramaz. –
Sadece ürünü güncellemek istiyorum, kullanmadan etrafta herhangi bir iş var mı: eski? –