繁体   English   中英

使用多个表的SQL触发器

[英]SQL Triggers using multiple tables

编写SQL命令以在表Order中创建触发器。 每次产品出现在表Order的新订单行中之后,触发器应从表Product的quantityRemaining列中减去该订单中的产品数量。

桌子

CREATE TABLE Product(
productNo int PRIMARY KEY,
productName VARCHAR(30),
quantityRemaining INT,
cost DECIMAL (10,2) DEFAULT 0.00);

CREATE TABLE Orders(
orderNo INT PRIMARY KEY,
custNo INT CONSTRAINT cusNo_fk REFERENCES CustomerDetails(custNo) ON DELETE CASCADE,
productNo INT CONSTRAINT prodNo_fk REFERENCES Product(productNo) ON DELETE CASCADE,
quantity INT);

尝试

CREATE OR REPLACE TRIGGER subtractQuantity 
AFTER INSERT ON Orders
FOR EACH ROW

BEGIN
     UPDATE Product
     SET quantityRemaining = quantityRemaining - quantity
     WHERE productNo = :NEW.ProductNo;
END;
/

错误

它无法识别“数量”变量。

我认为您不见了:New. 供参考:

CREATE OR REPLACE TRIGGER subtractQuantity 
AFTER INSERT ON Orders
FOR EACH ROW

BEGIN
     UPDATE Product
     SET quantityRemaining = quantityRemaining - :NEW.quantity
     WHERE productNo = :NEW.ProductNo;
END;

quantity在“ Orders表中,而不在“ Product表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM