這可能是一個愚蠢的問題,但它讓我追逐我的尾巴。SQL:觸發引用2個表
Order表和產品表,如果訂購數量的股票數量超過然後...
我可能一派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種不同的方法,試着在前面聲明一個變量,我找不到一種方法來做到這一點。
乾杯。
MSDN正是你所需要的。看看示例C:http://msdn.microsoft.com/en-us/library/aa258254(v=sql.80).aspx –
考慮存儲過程作爲觸發器的更簡單的替代方法。如果您使用存儲過程更新訂單行,那麼首先修改以檢查庫存是否相當容易。 – Andomar
想想你總是可以同時插入多個記錄到表中,甚至可能影響不同的產品。你的觸發方法並不能反映這種可能性,但它必須。涉及「插入」或「刪除」和*的每個觸發器都不是一個集合操作*是嚴重缺陷的。在設計觸發器之前,您必須定義如果有人插入20條記錄會發生什麼情況,其中有些記錄是好的,有些則不是。 (如果您只想允許單記錄插入,則可以使用存儲過程。) – Tomalak