这可能是一个愚蠢的问题,但它让我追逐我的尾巴。
订单表和产品表,如果订购数量超过库存数量,那么......
我可能用Google搜索了50个关键词,检查了3本书,找不到这样做的方法。这是我尝试做的前提,而不是我尝试过的。CREATE TRIGGER tr_check_qty
ON order_details
FOR INSERT,UPDATE
AS
IF (SELECT quantity FROM inserted) > products.quantity_in_stock
BEGIN
PRINT 'Orderded quantity cannot exceed quantity in stock'
ROLLBACK TRANSACTION
END
我可以在哪里加入?我尝试了20种不同的方法,尝试在前面声明一个变量,我找不到办法做到这一点。
干杯。
答案 0 :(得分:3)
你可以这样做:
CREATE TRIGGER tr_check_qty ON order_details
FOR INSERT,UPDATE
AS
BEGIN
-- rollback transaction if any product type in order exceeds stock amount
IF EXISTS (
SELECT
*
FROM
inserted
INNER JOIN products ON inserted.product_id = products.product_id
GROUP BY
products.product_id
HAVING
SUM(inserted.quantity) > MAX(products.quantity_in_stock)
)
BEGIN
PRINT 'Ordered quantity cannot exceed quantity in stock'
ROLLBACK TRANSACTION
END
END
适用于单行插入和多行插入。