0

Here is my trigger but i keep getting this error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6

CREATE TRIGGER check_date
    BEFORE INSERT ON rooms
    FOR EACH ROW
BEGIN
UPDATE rooms
  SET end_date = NULL, start_date = NULL, availabilty=y WHERE end_date < curdate();
END;
4

2 回答 2

1

y可能不是您表中的列。如果你的意思是 string 'y',你应该把它放在单引号中。

availabilty='y'

另请注意,可用性包含一个错字。正确的英文拼写是availability,但我当然不知道你的列名。

于 2013-06-26T06:27:50.950 回答
1

在 MySql 中,您不能针对您应用触发器的表发出 DML 语句。但是您可以使用关键字修改BEFORE正在插入(或更新)的记录的列的值(仅用于事件) 。NEW

尝试

DELIMITER $$
CREATE TRIGGER check_date
BEFORE INSERT ON rooms
FOR EACH ROW
BEGIN 
  IF NEW.end_date < CURDATE() THEN
    SET NEW.end_date = NULL, NEW.start_date = NULL, NEW.availability ='y';
  END IF;
END$$
DELIMITER ;

这是SQLFiddle演示。

于 2013-06-26T06:37:38.367 回答