我的存储过程有问题(在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
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
由于您的数据库是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)
Run Code Online (Sandbox Code Playgroud)
只是一个想法.可以更清洁,更快地编写替代品.
希望有所帮助
| 归档时间: |
|
| 查看次数: |
11726 次 |
| 最近记录: |