mysqlのIF文に誤りがありますか?

私はmysqlによってスーパーマーケットの人々の数を更新したいと思います。スーパーマーケットはテーブルです。人は、スーパーマーケットの人々の数量を意味します。 Nはスーパーマーケットの名前を意味します。減少とは、スーパーマーケット内の減少量の数を意味します。スーパーマーケット内の人の数が100人未満の場合は、人物を100に設定します。このmysqlコマンドは、「エラー1193不明なシステム変数 'person'」を返します。何か提案してください?

CREATE PROCEDURE updatePerson(IN n CHAR(10), IN decrease INT)
BEGIN
 UPDATE supermarket
 SET person = person - decrease 
 WHERE name = n;

 IF person< 100 THEN 
  SET person  = 100;
 END IF;
END
1
セミ関連のクエリの後に IF 文を貼り付けて、魔法のように動作すると予想しているようです。
追加された 著者 Lightness Races in Orbit,

1 答え

CREATE PROCEDURE updatePerson(IN n CHAR(10), IN decrease INT)
BEGIN
 UPDATE supermarket
 SET person =case when (person - decrease) <100 then 100 else  (person - decrease) end 
 WHERE name = n;    
END

それを試してください。

1
追加された