1

私の質問を解決してください

create trigger DeleteProduct
Before delete on Product
BEGIN
    select CASE WHEN ((SELECT Inventory.InventoryID FROM Inventory WHERE Inventory.ProductID = OLD.ProductID and Inventory.Quantity=0) ISNULL)
    THEN    
           RAISE(ABORT,'Error code 82')
    Else   
          DELETE from inventory where inventory.ProductID=OLD.ProductID;
    END;

END;

近くの削除ステートメントにエラーがあります

4

2 に答える 2

2

DELETElike のような式にステートメント like を入れることはできませんCASE

一般的なケースでは、 WHEN 句を使用してトリガーを条件付きにすることができます。

CREATE TRIGGER DeleteProductError
BEFORE DELETE ON Product
WHEN NOT EXISTS (SELECT InventoryID
                 FROM Inventory
                 WHERE ProductID = OLD.ProductID
                   AND Quantity = 0)
BEGIN
    SELECT RAISE(ABORT, 'Error code 82');
END;

CREATE TRIGGER DeleteProduct
BEFORE DELETE ON Product
WHEN EXISTS (SELECT InventoryID
             FROM Inventory
             WHERE ProductID = OLD.ProductID
               AND Quantity = 0)
BEGIN
    DELETE FROM Inventory
    WHERE ProductID = OLD.ProductID;
END;
于 2013-10-08T13:37:02.213 に答える