このクエリがあります
UPDATE table SET this = this-20 WHERE this >= 0
フィールドが0未満になることは望ましくthis
ありません。別のクエリを実行することなく、これを確実にするためにこのクエリに追加できる追加機能はありますか?
たとえば、これが 18 の場合、-2 に設定されます。
(MySQL を使用)
Greatest関数を利用できます。
UPDATE table SET this = greatest(0,this-20) WHERE this >= 0
これは基本的に、 this - 20と0を考慮して、より大きな値で this の値を設定します。
条件を に変更しますWHERE (this - 20) >= 0
。そして、チェック制約を作成します: ALTER TABLE [table] ADD CONSTRAINT ThisGreaterThanZero CHECK (this >= 0)
.