gpt4 book ai didi

php - 如果存在则插入或更新而无需使用主键

转载 作者:行者123 更新时间:2023-11-29 19:35:33 26 4
gpt4 key购买 nike

我正在尝试通过检查我的 product_number 列是否已存在来更新我的数据库表。我知道您可以使用INSERT OR UPDATE ON DUPLICATE KEY,但我尝试使用的列不是主键。

我在堆栈帖子上发现了以下查询,但我不断收到错误无法识别的语句类型。 (接近重复) 当我尝试使用 phpMyAdmin 运行它时。

DECLARE @numrecords INT
SELECT @numrecords = count(*)
FROM users_remark
WHERE product_number = '444'
IF @numrecords > 0 THEN
UPDATE products
SET product_name = 'abc',
product_description = def,
product_detail = '',
product_price = '100',
product_price_canada = '200'
WHERE product_number = '444'
ELSE
INSERT INTO products (product_number, product_name, product_description, product_price)
VALUES (444, abc, def, 100)
END IF

为什么这个查询不起作用?

有没有更好的方法来实现我想要实现的目标?

最佳答案

我为您创建了一个过程:

DELIMITER $$

DROP PROCEDURE IF EXISTS insert_or_update $$
CREATE PROCEDURE insert_or_update(pProduct_number INT, pProduct_name VARCHAR(200), pProduct_description VARCHAR(200), pProduct_detail VARCHAR(200), pProduct_price FLOAT(15,2), pProduct_price_canada FLOAT(15,2))
BEGIN

DECLARE numrecords INT;
SELECT count(*) INTO numrecords FROM products WHERE product_number = pProduct_number;
IF numrecords > 0 THEN
UPDATE products SET
product_name = pProduct_name,
product_description = pProduct_description,
product_detail = pProduct_detail,
product_price = pProduct_price,
product_price_canada = pProduct_price_canada
WHERE product_number = pProduct_number;
ELSE
INSERT INTO products (product_number, product_name, product_description, product_price)
VALUES (pProduct_number, pProduct_name, pProduct_description, pProduct_price);
END IF;

END $$

DELIMITER ;

仅调用:

CALL insert_or_update(444, , 'abc', 'def', '', '100', '444');

关于php - 如果存在则插入或更新而无需使用主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41576350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com