gpt4 book ai didi

php - 触发器/过程 MYSQL 的替代方案

转载 作者:行者123 更新时间:2023-11-29 12:50:04 25 4
gpt4 key购买 nike

我无法找到问题的解决方案。我需要能够为以下任务创建触发器/过程/函数(以最适用者为准)。

我想计算多个列的值并将计算结果放入同一个 MYSQL 表中的列中。我希望每次执行将数据更新或插入数据到数据库表中的操作时都进行计算。

我创建了此过程来演示我的方法(此过程当前在 UPDATE Product SET Product.bawtry_stock = 之后引发语法错误)

MYSQL

DELIMITER $$

CREATE PROCEDURE update_stock()
BEGIN
ON `product`
UPDATE product SET product.bawtry_stock =

kids_uk_j_105 + kids_c_17 + kids_c_18 + kids_c_19 +
kids_c_20 + kids_c_21,


quantity_c_size_26 + quantity_c_size_26_con_b,

product.chain_stock =

// as above with chain size suffixes

product.totalstock = bawtry_stock + chain_stock,
product.bawtry_value = bawtry_stock * wholesale_price,
product.chain_value = chain_stock * wholesale_price,
product.totalvalue = chain_value + bawtry_value;
END$$

DELIMITER ;

**MYSQL 表**

TBL NAME = 'product' 
TBL COLUMNS = bawtry_stock,
chain_stock,
totalstock,
bawtry_value,
chain_value,
totalvalue,
product_id, (PKEY)
(together with all of the kids and quantity size columns)

因此,每次对产品表执行 UPDATE 或 INSERT 操作时 - 我需要计算列出的列中的所有值并将其输入到 bawtry_stock、chain_stock 等中。

如果这是不可能的,那么也许创建一个可以通过 PHP 调用的函数/过程,我将作为 CRONJOB 运行。

如果有人可以提供一些建议 - 我们将不胜感激。谢谢

编辑

只是为了提供一些进一步的信息 - 我已经尝试使用类似的语法将其作为触发器:

触发

分隔符$$

CREATE
TRIGGER `update_stock`
AFTER UPDATE ON `product`
FOR EACH ROW BEGIN
UPDATE product
SET bawtry_stock =

// ... same body logic as above

END$$

DELIMITER ;

这产生了MySQL触发器:错误1442(HY000):无法更新存储函数/触发器中的表'tbl',因为它已被调用此存储函数/触发器的语句使用错误。

我对此进行了研究并发现了这篇文章LINK

最佳答案

您可以创建另一个表,其中保存您的计算值和product_id(可以使用外键引用),向主表添加触发器以进行更新和插入操作,并在新表中更新或插入您的值。无论您在何处使用这些值,都可以在 select 语句中连接这两个表。

关于php - 触发器/过程 MYSQL 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24886707/

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