0
UPDATE base_resources
    SET value = value + ?
    WHERE resource_id = ?
    AND base_id = ?

このクエリがあります。どういうわけか値の最大値を追加することは可能ですか? すなわち、「値」の新しい値は x より高くすることはできません。もしそうであれば、x に設定してください。

例えば:

入力した値が (1500) で、許容される最大値 (クエリに追加したい条件) が 1000 の場合、値は代わりに 1000 になります。

どうやってやるの?

4

3 に答える 3

4

このようなもの:

UPDATE base_resources
    SET value = least(value + ?, 1500)
    WHERE resource_id = ?
    AND base_id = ?
于 2013-07-23T20:46:03.577 に答える
0

これはビジネス上意味がありますか?value商品の供給は店舗ですか?ストアに 1500 を超えるアイテムを格納できない場合、値を 1500 に制限すると、リソースが失われる可能性があります。500 個のアイテムを店舗に出荷する倉庫を想像してください。ストアに既に 1200 個のアイテムがあるとします。概念的には、次のトランザクションがあります。

  • 取引開始
    • 倉庫の在庫から 500 を引きます。
    • ストアの在庫に 500 を追加してみてください。
      • 300のみ追加されます。
    • 余分な 200 個のアイテムはどうなりますか? 彼らは消えますか?
  • 取引終了。

以前の回答のいずれかが間違っていると言っているわけではありませんが、あなたの状況が意味があるかどうかはわかりません. 1500 を超えないように制約をvalue設定し、倉庫の在庫と店舗の容量に基づいて送信するアイテムの数を計算することをお勧めします。

于 2013-07-23T20:56:58.883 に答える
0

多分case構文?

UPDATE base_resources
    SET value = case 
                  when value + ? > X then X
                  else  value + ?
                end 
    WHERE resource_id = ?
    AND base_id = ?
于 2013-07-23T20:45:45.567 に答える