Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我希望触发器能够在mysql中的日期小于当前日期时更改值_Php_Mysql - Fatal编程技术网

Php 我希望触发器能够在mysql中的日期小于当前日期时更改值

Php 我希望触发器能够在mysql中的日期小于当前日期时更改值,php,mysql,Php,Mysql,这是我的扳机,但我一直收到这个错误 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第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; 创

这是我的扳机,但我一直收到这个错误

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第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;
创建触发器检查\u日期
在插入房间之前
每行
开始
更新房间
设置end_date=NULL,start_date=NULL,availability=y,其中end_date
y
可能不是表中的一列。如果您指的是字符串
'y'
,则应将其置于单引号中

availabilty='y'

还要注意,Availability包含一个输入错误。正确的英文拼写是可用的,但我当然不知道您的列名。

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

试一试

分隔符$$
创建触发器检查日期
在插入房间之前
每行
开始
如果NEW.end_date

这里是演示。

Make
availability='y'
我已经这样做了,仍然得到相同的错误我像你说的那样更改了y,但是仍然得到相同的错误,是的availability是我的列名。你认为我也应该把空值放在引号中吗?不,空值不应该被引用。