1

(MySQL の) ストアド プロシージャに問題があります。レコードが存在する場合はテーブルのデータ更新処理が必要で、存在しない場合はレコードを挿入します。私は持っている:

DELIMITER //

CREATE PROCEDURE saveorUpdate(in product varchar(30), price int, stock int, active varchar(5))

BEGIN

DECLARE id int;

SELECT id_pro FROM products WHERE product=product into id;

IF(id_pro=id)THEN

UPDATE products SET product=product, price=price, stock=stock, active=active 
WHERE id_pro=id;

ELSE

INSERT INTO products (product, price, stock, active) VALUES 
(product, price, stock, active);

END IF;
END

何か案は?

4

2 に答える 2

5

データベースがMySQLであるため、INSERT INTO ... ON DUPLICATE KEY構文を使用して、ストアドプロシージャのものを破棄することができます。

INSERT INTO products (
  product, price, stock, active
) VALUES (
  $product, $price, $stock, $active
) ON DUPLICATE KEY UPDATE
  product=VALUES(product)
 , price=VALUES(price)
 , stock=VALUES(stock)
 , active=VALUES(active)

ただのアイデア。代替案を書くのがよりクリーンで高速になる可能性があります。

それが役立つことを願っています

于 2013-02-19T12:44:39.280 に答える