【发布时间】:2012-09-29 15:07:50
【问题描述】:
好的,我已经看到很多类似的问题,但爬过答案并不能让我的触发器没有错误!
我需要的结果是:每当在数据库表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] 存在一些问题,那么有什么办法可以解决我的问题吗?
逻辑很简单,从查询中可以理解需求,对吧?
接受所有意见和建议。
【问题讨论】:
标签: mysql database triggers phpmyadmin