3

これはおそらくばかげた質問ですが、尻尾を追いかけるようになりました。

注文テーブルと製品テーブルで、注文数が在庫数を超えた場合...

私はおそらく 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の異なる方法を試しましたが、前に変数を宣言しようとしましたが、これを行う方法が見つかりません.

乾杯。

4

1 に答える 1

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

単一行の挿入と複数行の挿入の両方で機能します。

于 2012-12-16T16:05:40.603 に答える