好的,我已经看到了许多类似的问题,但爬过答案并不能让我的触发器没有错误!
我需要的结果是:每当在数据库表中插入一个新值时temp_pool
,它都会触发,如果新地址不等于先前的地址值,则与此相同dev_id
,NEW.dev_id
则将新值插入位置表。
这是查询(示例):
CREATE TRIGGER filter
after insert on geo.temp_pool
for each row
BEGIN
DECLARE OLD_ADDR VARCHAR(2048);
OLD_AADR = select address from temp_pool where dev_id like NEW.dev_id
order by date desc, time desc limit 1;
IF (OLD_ADDR != NEW.address) THEN
INSERT INTO a3380361_geo.location
VALUES (NEW.dev_id,NEW.address,NEW.lat,NEW.lng,NEW.date,NEW.time);
END IF;
END
$$
我正在使用 phpMyAdmin 编辑器并将分隔符设置为$$
.
我得到的错误是:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 '= select address from temp_pool where 1 order by date desc, time desc limit 1; 附近使用 ' 在第 5 行
我坚信将值赋值给SELECT
变量 [ OLD_ADDR
] 存在一些问题,那么有什么方法可以解决我的问题吗?
逻辑很简单,从查询中可以理解需求,对吧?
接受所有意见和建议。