【发布时间】:2021-01-04 07:51:24
【问题描述】:
当新值插入时,我创建了一个插入前触发器,因为它的 item_sku 已经退出,然后删除已经退出的行,然后插入新行。但它显示错误: 错误代码:1442 无法更新存储函数/触发器中的表“order_item_temp”,因为它已被调用此存储函数/触发器的语句使用 触发代码是
TRIGGER LINE_DEL AFTER INSERT ON order_item_temp
FOR EACH ROW
BEGIN
DECLARE ITEM_D VARCHAR(50);
SELECT item_sku INTO @ITEM_D
FROM order_item_temp
GROUP BY item_sku,shopify_order_id
HAVING COUNT(item_sku) > 1;
DELETE FROM order_item_temp WHERE item_sku=@item_d;
END;
$$
DELIMITER ;
手动输入新的重复行语法是:
插入到 ehad_db.order_item_temp ( ID, item_sku, item_uid, item_sid, 项目数量, document_item_sid, document_item_row_version, ref_order_item_sid, ref_order_item_row_version, item_discount_amt, item_discount_code, item_discount_type, item_discount_target, shopify_order_id, order_document_sid, ref_order_sid ) 价值观 ( '89', '1000000009574', '517662213000115019', '32000000306430', '1', '582945547000174220', '1', '', '', '0', '', ' ', ' ', '1903931129956', '582945544000151211', ' ');
现在它显示上述错误。
【问题讨论】:
-
用户定义的变量不是一回事,不能与声明的变量 stackoverflow.com/questions/11754781/… 互换,您不能将结果集存储在变量中,我希望看到对 NEW 的引用。插入后触发器中的值,并且您无法操作在触发器中触发触发器的表。(如错误所述)。
-
考虑插入..on..重复键或替换
-
在这种幼稚的情况下,它可能会起作用,但除现有逻辑之外的任何逻辑都会失败。