MySQL Workbench的“ OLD”语法已更改?

时间:2019-02-05 22:02:52

标签: mysql sql mysql-workbench

我在MySQL工作台中设置了一个触发器,用于完成我想要的操作。最近,我的工作场所将所有计算机上的MySQL工作台更新为6.3.10版,由于某种原因,触发器在更新过程中被删除。

基本上,当更改另一列时,触发器应使用当前日期更新一列。以前是通过使用以下语法来实现的:

if (NEW.colname <> OLD.colname or (OLD.colname is null && NEW.colname is not null)) 
then 
set NEW.othercolname = current_date()

问题是当我尝试在新的MySQL版本中重新创建相同的触发器并应用它时,遇到错误:

ERROR 1363: There is no OLD row in on INSERT trigger

在我看来,MySQL正在寻找名为OLD的行,该行不存在;但是,此语法曾在以前的版本中用于预期的结果。谁能建议一种替代语法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

首先,错误消息来自mysql,而不是来自mysql工作台,因此mysql工作台的版本与此处无关。

第二,错误消息非常清楚:您尝试引用插入触发器中的numbers.count(x)行。显然这是不可能的,因为插入新行时没有旧行。

您需要更改触发器以捕获更新事件或更改触发器逻辑。

答案 1 :(得分:0)

ERROR 1363: There is no OLD row in on INSERT trigger

您已设置MySQL Workbench来创建INSERT触发器。如错误消息所述,INSERT触发器中没有OLD行。

您想要的是UPDATE触发器。