2012-11-28 3 views
0

J'ai 2 tables i-e (1) Return_Invoice et (2) product_warehouse. Je veux mettre à jour la colonne de quantité utilisée dans Product_warehouse une fois que j'entrer les données dans la colonne quantité c.-à-Return_Invoice de table quand j'entrez la valeur dans Quantity colonne Return_Invoice tableau qui quantity devrait être moins de Quantity colonne dans Product_Warehouse requête Table.Any ou Trigger pour cette .Mise à jour requête avec déclencheur

enter image description here

J'ai essayé la requête suivante mais ne pas fonctionne.

update product_warehouse 
set Product_Warehouse.Quantity = Product_Warehouse.Quantity - Return_Invoice.Quantity 
where (Product_Warehouse.item_code = Return_Invoice.item_code) 
+0

Est-il indispensable d'utiliser TRIGGER dans ce cas? Pouvez-vous utiliser une requête pour cela? – TechDo

+0

c'est à vous ... si vous connaissez la requête, je peux ajuster le déclencheur –

Répondre

0

Mettez votre code article dans l'endroit nécessaire

Create TRIGGER anUpdate ON dbo.Return_Invoice 
After Insert 
AS 
declare @qty int 
set nocount on 

BEGIN 
    set @qty= (Select RI.quantity FROM Return_Invoice RI where Item_code=yourcode) 
    Update Product_Warehouse set [email protected] where Item_code=yourcode 
END 
GO 
+0

yourcode? J'ai des milliers de item_code –

+0

item_code est la clé relationnelle entre vos tables. Donc, pendant que vous mettez à jour votre table "Return_Invoice", vous devez connaître le item_code si vous voulez déclencher dans "product_warehouse" – polin

+0

Cette question est étiquetée Oracle. Ce n'est pas une syntaxe Oracle. – Ben

1

S'il vous plaît vérifier si le déclencheur donné est votre exigence:

create or replace 
TRIGGER "WR_RETURN_INVOICE_UPDATE_TRG" 
AFTER UPDATE ON RETURN_INVOICE 
FOR EACH ROW 
    BEGIN 
    UPDATE PRODUCT_WAREHOUSE 
    SET QUANTITY=QUANTITY-:OLD.QUANTITY 
    WHERE ITEM_CODE=:OLD.ITEM_CODE; 
END WR_RETURN_INVOICE_UPDATE_TRG;