0

在庫と顧客販売の 2 つのテーブルを作成しました。倉庫で働く個人は、customer_sales テーブルにアクセスできません。

そこで、在庫テーブルに num_sales というフィールドを追加しました。

新しい顧客の販売が追加されるたびにトリガー関数を作成したいと考えています。これは、テーブル全体ではなく、販売された行であった特定の inventory_item に対応します。

これは私がこれまでに持っているものです。

ALTER TABLE inventory 
ADD num_sales INT 

UPDATE movies SET num_sales = 0;

ALTER TABLE movies ALTER COLUMN num_rentals INT NOT NULL;

GO
CREATE TRIGGER tr_movies_num_rentals_add
   ON customer_sales FOR INSERT
   AS
   BEGIN
     UPDATE inventory
       SET num_sales = num_sales + (SELECT sale_status_code FROM INSERTED)
       WHERE 1 = (SELECT sale_status_code FROM INSERTED);
   END;

注: sale_status_code の値: 1 = 販売済み、2 = 予約済み、3 = 紛失。

更新: Microsoft SQL サーバー管理スタジオを使用しています。私は初心者で、これは学校での質問です。

4

1 に答える 1

0

最初に、挿入されたものには複数の行があると仮定します。SQL サーバーのトリガーは、行単位では動作しません。サブクエリを使用せずに挿入に参加する必要があります。次に、これを挿入、更新、および削除で実行したい場合は、INSert トリガー以上のものを使用する必要があります。また、削除トリガーでは、削除されたテーブルの値を在庫合計から差し引くため、挿入および更新とは異なる式を使用する必要があります。

于 2013-04-10T21:59:23.727 に答える