从前一行触发子代

时间:2017-03-28 16:56:55

标签: mysql mysqli triggers

我正在尝试使用以下代码设置列:

declare before int;

set before = (
        select X.delivery
        from delivery as X
        where X.delivery_id < NEW.delivery_id LIMIT 1
        );
set NEW.delivery_col = before + 1;

我的目标是在新行之前获得一行并将值设置为1;

如果我用一个数字设置变量(例如:2)它可以工作,但它不能用于选择。

知道我在搞什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用MAX()函数获取最大值并为其添加1,例如:

set before = SELECT MAX(delivery) FROM delivery;
set NEW.delivery_col = before + 1;

或者

set NEW.delivery_col = SELECT MAX(delivery) + 1 FROM delivery;

答案 1 :(得分:0)

@Low Rider,您在评论中粘贴的代码存在一些问题。

  • 以前不添加1。
  • 定义触发器时需要使用不同的分隔符,以便分隔符包含在触发器中。
  • 使用反划线标记引用变量,列和表名称以避免与保留字冲突

尝试一下:

bookType:"xlsm"