Mysql使用存储过程将vb6到数据库的2个值与2列进行比较

标签 mysql sql database vb6 sql-insert

我的数据库中有一个 products 表,其中包含列/字段:

  • 产品ID
  • 产品名称
  • 描述
  • 供应商
  • 购买日期
  • 数量

现在,我想要实现的是:

  • 每次我想要在 products 表中添加新值时,新输入的“productname”和“supplier”值都会比较 products 中现有的所有值表。

场景:

  • 如果products 表中已存在新的产品名称和供应商值,则新值的数量将添加到现有值的数量
  • 如果不存在,则将新值添加到 products 表中。

这是尝试过的代码,但它不起作用:

Delimiter //
CREATE PROCEDURE `wew`(pid int,pname varchar(50),pdesc varchar(50),psupp varchar(50),pdate date,pquant int)
begin
declare lloyd char default null;
select productname from products where productname=pname LIMIT 1 into lloyd for update;
if(lloyd) then
update products set quantityleft=quantityleft+pquant where productname=pname;
else
insert into products (productid,productname,proddescription,supplier,lastpurchasedate,quantityleft) values(pid,pname,pdesc,psupp,pdate,pquant);
end if;
end;
//

你能帮忙解决这个问题吗?对此真的很困惑。

描述产品:

SQL result

Host: localhost
Database: prodpurchase
Generation Time: Mar 24, 2013 at 03:52 PM
Generated by: phpMyAdmin 3.2.4 / MySQL 5.1.41
SQL query: Desc Products; 
Rows: 7

Field             Type            Null      Key      Default    Extra
ProdID            int(5)          NO        PRI       NULL  auto_increment
ProdName          varchar(50)      NO       UNI       NULL   
ProdSupplier      varchar(250)     NO       UNI       NULL   
ProdDescription   varchar(250)     NO        NULL    
ProdDate          date             NO        NULL    
ProdPrice         double            NO       0   
ProdQuantity      int(50)        NO      NULL    

最佳答案

您可以利用MySQL的 INSERT...ON DUPLICATE KEY UPDATE

首先,您需要为列添加 UNIQUE 约束:productnamesupplier:

ALTER TABLE products ADD CONSTRAINT tb_uq UNIQUE (productname, supplier)

一旦你执行了该操作,

INSERT INTO products (productid, productname, proddescription, supplier, lastpurchasedate, quantityleft)
VALUES (pid, pname, pdesc, psupp, pdate, pquant)
ON DUPLICATE KEY UPDATE quantityleft = quantityleft + pquant;

关于Mysql使用存储过程将vb6到数据库的2个值与2列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584774/

相关文章:

php - 如何正确格式化 SQL 日期时间

sql - 如何将 DB2 TIMESTAMP 转换为 UTC 毫秒?

PHP PDO 没有活跃的事务

database - Oracle SID 和服务名称;连接问题

c# - C#App中小型项目的最佳数据库设计

Mysql 使用 utf8 varchar 字段查找不正确

php - 在函数中利用现有的数据库连接

django - PLC 到服务器到 Web

mysql - 系统更新后出现错误: 'Can' t connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

mysql - 让服务器拥有持久的 mySQL 连接或在需要时连接会更高效