我是mysql触发器的新手,我在一个数据库中有两个表,一个叫做 tasks
另一个是 task_rules
.
一次新的 task_rule
是插入的,我想比较字段时间(它是一个时间对象)和当前时间。
如果大于当前时间,我想在中添加新行 tasks
把…放在 tasks
)至 id
新添加的规则,以及 time field
在 tasks
到 time field
新添加行的。
我得到许多语法错误,我不知道如何创建这个触发器。
BEGIN
DECLARE @time TIME
DECLARE @freq VARCHAR(400)
@time = NEW.time
@freq = NEW.frequency
IF (@time > NOW()) AND (@freq == 'daily') THEN
INSERT INTO task_rules ('rid', 'time') VALUES (NEW.id, @time)
END IF
END
我是用phpmyadmin做的
1条答案
按热度按时间qlzsbp2j1#
1) 不应该声明用户定义的变量(前面有@的)请参见如何在mysql中声明变量?2) 要给变量赋值,必须使用set语句3)必须终止每条语句-如果使用phpmyadmin,并且默认终止符设置为;更改它并用终止触发器中的语句;见-https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html 4) mysql中的null safe equals不是==从内存中应该是<=>请参见https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html 5) 您可能应该在触发器前后设置分隔符6)列名应该用反勾号转义,而不是单个引用。7) for each row子句before begin语句。
试试这个
做复习https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html