2016-04-14 50 views
0

Sipariş tablosunu sattıktan ve güncelleştirdikten sonra Envanterimde Miktarı güncelleyen bir Tetikleyici adlı bir tetikleyici nasıl oluşturulur. İki Ürünün bir araya getirilmesiyle hem Ürün hem de Ürün Stokta bulunur. Üretici ve ürün adı . Herhangi bir hata olmadan nasıl tetikleyebilirim? Ben yaptım ama hata geçersiz bağlama değişkeni değişkenlerin ikame kapatırSQL geliştiricisinde geçersiz bağlama değişkeni edinme

CREATE OR REPLACE TRIGGER ProductMaint 
    AFTER INSERT ON Orders 
    FOR EACH ROW 
    WHEN(NEW.Qty >0) 
    BEGIN 
    UPDATE Products 
    SET Qtyonhand = Qtyonhand - :NEW.Qty 
    WHERE Products.Mfr =Orders.Mfr 
    AND Products.Product =Orders.Product; 
    DBMS_OUTPUT.PUT_LINE(:New.Qtyonhand);  

END; 
/
+0

(ne zaman ve arasına boşluk koymak – cableload

+0

onun uyulması ve ben prosedür yoluyla bir sipariş güncellemesi yaptığınızda artık onun bana söylediğini:? Hata raporu - ORA-04098: tetikleyici 'S304.PRODUCTMAINT' dir geçersiz ve başarısız yeniden doğrulama 04098. 00000 - "tetikleyici '% s.% s' geçersiz ve yeniden doğrulama başarısız" * Neden: Bir tetikleyici yürütme için alındı ​​ve geçersiz bulundu. Ayrıca, derlemesi/yetkilendirmesi için * işleminin başarısız olduğu anlamına gelir. * Eylem: Seçenekler derlemeyi çözecektir. düzeltme hataları, tetiği devre dışı bırakın veya tetiği bırakın. – user3591952

cevap

0

Kullanım SET DEFINE OFF isteyen edilir.
Tüm komut dosyasını yürütmek için Run script (F5) komutunu/simgesini kullanın.

SET DEFINE OFF; 
    CREATE OR REPLACE TRIGGER ProductMaint 
    AFTER INSERT ON Orders 
    FOR EACH ROW 
    WHEN(NEW.Qty >0) 
    BEGIN 
    UPDATE Products 
    SET Qtyonhand = Qtyonhand - :NEW.Qty 
    WHERE Products.Mfr =Orders.Mfr 
    AND Products.Product =Orders.Product; 
    DBMS_OUTPUT.PUT_LINE(:New.Qtyonhand);  

END; 
/
+0

Hie Yanıtladığınız için teşekkürler. Tamamladıktan sonra binds girmemi ve sonra geçersiz bind değişkenini göstermemi istiyor. – user3591952