我在学校项目中使用000webhost。它没有免费版的活动功能。因此,如果元组过期,我会使用Trigger删除元组。但是这给了
"#1064 - 您的SQL语法出错;检查手册 对应于您的MariaDB服务器版本,以获得正确的语法 靠近''在第4行"。
这是我的触发器SQL
CREATE TRIGGER notification_delete
AFTER DELETE ON notification
FOR EACH ROW
BEGIN
DELETE
FROM notification
WHERE (DATEDIFF(CURDATE(), date_created) > 2);
END
我检查了DELETE语句它工作正常
DELETE
FROM notification
WHERE (DATEDIFF(CURDATE(), date_created) > 2);
这是我的表
CREATE TABLE notification (
id INT (11) NOT NULL
,user_id INT (11) NOT NULL
,message VARCHAR(1023) COLLATE utf8_unicode_ci DEFAULT NULL
,priority SET (
'1'
,'2'
,'3'
,'4'
,'5'
) COLLATE utf8_unicode_ci NOT NULL
,date_created DATE NOT NULL
,breakdown_user_id INT (11) DEFAULT NULL
,appointment_id INT (11) DEFAULT NULL
,order_id INT (11) DEFAULT NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
答案 0 :(得分:-1)
您的问题是;
- 您需要生效另一个分隔符,否则解析器会将该分号解释为查询的结尾。
DELIMITER |
CREATE TRIGGER notification_delete AFTER DELETE on notification
FOR EACH ROW
BEGIN
DELETE FROM notification WHERE (DATEDIFF(CURDATE(), date_created)>2);
END
DELIMITER ;
但是,修复后可能还有其他困难,因为修改触发操作的查询中使用的表有限制。您可能需要了解哪个数据库操作会触发此操作。因为它只是一个不应该成为问题的一般清理。