mysql - 使用存储过程插入和更新

标签 mysql sql stored-procedures

我的存储过程(在 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/

相关文章:

sql - Oracle - 文字与格式字符串错误不匹配

php - 在 PHP 中从 SQL 查询检索结果的问题

c# - 如何将空值传递给使用存储过程的 SqlDataSource?

sql-server - 试图了解存储过程的行为

php - 存储过程准备语句错误mysql php

mysql - 安装MySQL后连接到node.js

mysql - 如何在sql中将字符串附加到表中的值

php - MySQL 的 sys_getloadavg

c# - ADO.NET 中参数化 SQL 命令的最终形式

mysql - 从表中选择行,其中连接的表具有超过 X 个条目