+ -
当前位置:首页 → 问答吧 →  mySQL触发器语法问题,老是报错。

mySQL触发器语法问题,老是报错。

时间:2011-12-13

来源:互联网

有个表card,里面有三个字段:CstarTime和CendTime,类型都是DATE,ID,类型INT。现在我要自动让CstarTime为当前时间,CendTime为当前时间加4年。要怎么弄?我试了好多次,都失败了。
DELIMITER //

CREATE TRIGGER card_bi BEFORE INSERT ON card
FOR EACH ROW
BEGIN
  update card set NEW.CstarTime = CURDATE() , NEW.CendTime=DATE_ADD(CURDATE(),INTERVAL 4 YEAR);
END;//
这样可以创建触发器,但却不能插入数据,插入时报错。

改其他各种写法,老是出现CstarTime或是CendTime无法找到变量,到底是为什么啊?
如果只是针对一个字段弄,却可以很轻松的成功。为什么啊?求高手!!


CREATE TRIGGER card_ai
BEFORE INSERT ON card
FOR EACH ROW
  set NEW.CstarTime = CURDATE();
  SET NEW.CendTime=DATE_ADD(CURDATE(),INTERVAL 4 YEAR);//
这样的话,第一个SET可以成功执行,第二个set就报Unknown system variable 'CendTime'。为什么啊?

作者: fenglren   发布时间: 2011-12-13

desc card;

用这个命令看一下你表中有些什么字段,估计是没有 CendTime' 这个字段。

作者: ACMAIN_CHM   发布时间: 2011-12-14

表中有无CendTime字段

作者: wwwwb   发布时间: 2011-12-14

引用 1 楼 acmain_chm 的回复:

desc card;

用这个命令看一下你表中有些什么字段,估计是没有 CendTime' 这个字段。


真的有这个字段啊。

作者: fenglren   发布时间: 2011-12-14

引用 2 楼 wwwwb 的回复:

表中有无CendTime字段


有的,确定表没有问题,是不是我的语法错了?

作者: fenglren   发布时间: 2011-12-14