我在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的行,该行不存在;但是,此语法曾在以前的版本中用于预期的结果。谁能建议一种替代语法来实现这一目标?
答案 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触发器。