我的存储过程(在 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
有什么想法吗?
最佳答案
由于您的数据库是 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)
只是一个想法。可能是一种更干净、更快速的替代方案。
希望对你有帮助
关于mysql - 使用存储过程插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14957788/