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

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

有个表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’。为什么啊?




给出你的 show create table card , 这样别人可以直接测试你的语句。




DELIMITER $$

USE `aa`$$

DROP TRIGGER /*!50032 IF EXISTS */ `card_bi`$$

CREATE

/*!50017 DEFINER = ‘root’@’localhost’ */

TRIGGER `card_bi` BEFORE INSERT ON `card` 

FOR EACH ROW BEGIN

SET NEW.CstarTime = CURDATE() ;

SET NEW.CendTime=DATE_ADD(CURDATE(),INTERVAL 4 YEAR);

END;

$$

DELIMITER ;

测试可以插入记录

CREATE TABLE `card` (

`Cid` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,

`Cpassword` varchar(6) NOT NULL DEFAULT ‘888888’,

`Cstate` enum(‘正常’,’锁定’,’挂失’) NOT NULL DEFAULT ‘正常’,

`Cmoney` float(7,2) unsigned NOT NULL DEFAULT ‘0.00’,

`CstarTime` date NOT NULL DEFAULT ‘0000-00-00’,

`CendTime` date NOT NULL DEFAULT ‘0000-00-00’,

`CstrNum` int(10) unsigned NOT NULL DEFAULT ‘0’,

PRIMARY KEY (`Cid`),

KEY `FK_card_1` (`CstrNum`),

CONSTRAINT `FK_card_1` FOREIGN KEY (`CstrNum`) REFERENCES `student` (`Sid`)

) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8

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

相关文章:

你感兴趣的文章:

标签云: