Mysql-де IF-дің мәлімдемесінде қате бар ма?

Мен микс супермаркеттердегі адамдардың санын жаңартқым келеді. Супермаркет - үстел. Адам - ​​супермаркеттегі адамдардың саны. N - супермаркет атауы. Азайту - супермаркеттегі азаятын саны. Егер супермаркеттегі адамдардың саны 100-ден аз болса, онда адам 100-ге тең болады. Бұл MySQL пәрмені «қате 1193 белгісіз жүйе айнымалысы» адам «дегенді білдіреді. Кез келген ұсыныс өтінеміз?

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
қосылды