mysql - 在 TRIGGER 中使用 DELETE LIMIT
问题描述
如何DELETE INTO .... ORDER BY ... LIMTI
在触发器内部使用?这是我尝试的
BEGIN
IF NEW.qty > 0 THEN
SET @QTY = 0;
REPEAT
INSERT stock_fifo(id, sku_id, slot_id, stock_at)
VALUES(NEW.id, NEW.sku_id, NEW.slot_id, NEW.stock_at);
SET @QTY = @QTY + 1;
UNTIL @QTY > NEW.qty END REPEAT;
ELSEIF NEW.qty < 0 THEN
DELETE FROM stock_fifo
WHERE slot_id = NEW.slot_id AND sku_id = NEW.sku_id
ORDER BY id
LIMIT -NEW.qty;
END IF;
END
它说周围有错误
LIMIT -NEW.qty
解决方案
LIMIT
expressions have to be "nonnegative integer constants" (see the manual) so LIMIT -NEW.qty
is a syntax error. You can loop the DELETE
the same way as you loop the INSERT
:
SET @QTY = 0;
REPEAT
DELETE FROM stock_fifo
WHERE slot_id = NEW.slot_id AND sku_id = NEW.sku_id
ORDER BY id
LIMIT 1;
SET @QTY = @QTY - 1;
UNTIL @QTY < NEW.qty END REPEAT;
推荐阅读
- c# - 对象值在 linq 中给出对象数组
- android - 无法将字节从活动发送到蓝牙接收器?
- wordpress - 每次在wordpress中加载页面时如何更改背景图像
- r - 如何为二次模型创建预测线
- python - Python xml:以十六进制形式编码数字字符引用
- python - 将 GridSearchCSV 与 KNN 一起使用时总是出现属性错误
- python - 如何更改标签内某些单词的颜色?
- java - Java Android - 使用帮助类检索可运行内部的上下文
- javascript - 遍历多个表单并遍历每个表单元素并收集它们的属性
- typescript - 打字稿:输入对象具有接口键的子集