1

ここにストアドプロシージャがあります:

delimiter //
create procedure insert(p int, n varchar(10), d date, q int)
begin
select pname if(pname!=n) 
  then 
    insert into prod(p,n,d,q)values(p,n,d,q)
  else quant=quant + q;
from prod;
end;
//

このストアド プロシージャは、とが等しくないprod場合にテーブルにレコードを追加します。ELSE が等しい場合は、数量が更新され、q の値が追加されます。このアイデアは機能していません。助けてもらえますか? これを達成する方法は?pnamen

4

1 に答える 1

0
....
BEGIN 
    DECLARE p CHAR DEFAULT NULL;
    SELECT pname FROM prod WHERE pname = n LIMIT 1 INTO p FOR UPDATE;
    IF(p) THEN
        UPDATE prod SET quant = quant + q WHERE pname = n;
    ELSE 
        INSERT INTO prod(p,n,d,q) values(p,n,d,q);
    END IF;
END;

prod の pname に UNIQUE キーがある場合は、もっと簡単な方法があります。

于 2013-03-14T19:36:49.980 に答える