2

MySQL (またはその件については任意の DB) がこれを実行できるかどうかはわかりませんが、実行できると想定しています。

複数のフィールドを持つテーブルがあります。これらのフィールドの 1 つは利用可能な「アイテム」の総数を追跡し、別のフィールドは現在使用中のアイテムの数を保持します。

使用中の項目の数が利用可能な合計よりも多くなると UPDATE が失敗するように、UPDATE ステートメントで着信データを検証することは可能ですか? IE 別のフィールドの内容に基づいてフィールドに数値制限を追加できますか?

4

2 に答える 2

5

いくつかのテーブルがあるとします:

Items
------------
ItemID
NumAvailable
-------------

Checkout
-----------
UserID
ItemID
-----------

その特定のアイテムのを合計してと比較するトリガーを作成できます。これは次のようになります (エラーがある可能性があります。一般的なアイデアのみが示されています :) 。hereから収集されたエラーの方法、より良い方法があるかもしれません):ItemIDNumAvailable

CREATE TRIGGER check_available 
BEFORE INSERT ON Checkout 
FOR EACH ROW 
BEGIN
  SELECT IF (COUNT(new.ItemID) > Items.NumAvailable) THEN
    DECLARE dummy INT;
        SELECT 'No more items to check out!' INTO dummy 
  FROM new NATURAL JOIN Items WHERE NEW.ItemID = Items.ItemID
  END IF;
END
于 2013-01-25T07:21:10.950 に答える
-2
update tableName set useItemColumnName= case when totalItemColumnName>=amount then amount else useItemColumnName end .

注:amountは更新可能な変数です。1、2、3...

于 2013-01-25T07:22:30.230 に答える