gpt4 book ai didi

mysql - 检查条件时触发器无法正常工作

转载 作者:行者123 更新时间:2023-11-29 08:25:48 24 4
gpt4 key购买 nike

我只想以两种方式存储记录。

  1. 如果存在,则会更新信息
  2. 如果不存在,则会作为新记录插入

以下是我的表格的大纲架构:

product_purchase_item 具有product_purchase_item_id、product_id、数量列
product_stock 具有product_stock_id、product_id、product_total_quantity 列

我正在创建一个触发器

 DELIMITER //
CREATE TRIGGER store_check AFTER INSERT ON product_purchase_item
FOR EACH ROW
BEGIN
DECLARE X INTEGER;
SET X =(SELECT product_id FROM product_stock where product_id = NEW.product_id);
IF NEW.product_id !=X THEN
INSERT INTO product_stock VALUES(NULL,NEW.product_id,NEW.quantity);
ELSE
UPDATE product_stock
SET product_total_quantity=product_total_quantity+NEW.quantity
WHERE product_id=NEW.product_id;
END IF;
END;//
DELIMITER;//

问题出在 product_stock 表中,当产品记录不存在时,INSERT 查询不起作用,但当产品记录存在时,更新查询可以正常工作。

最佳答案

INSERT 语句真的“不起作用”吗?或者,问题是 INSERT 语句根本没有被执行?

当前面的 SELECT 查询不返回行时会发生什么? X 被赋予什么值?

X 具有该值时,条件测试“foo != X”是否返回 TRUE,还是返回其他内容(例如 FALSE 或 NULL)?

你尝试过这样的事情吗?

IF NEW.product_ID = X THEN
UPDATE ...
ELSE
INSERT ...
END IF;

(我知道用问题来回答问题是不好的做法;但这似乎是合适的,因为回答这些问题会让你得到你真正想问的问题的答案。)

关于mysql - 检查条件时触发器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979236/

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