0
我有一個名爲pano_raw的表,它有3列lat,lng和latlng。基於空間數據的觸發器
lat和lng只是小數(10,3),latlng是POINT類型的空間索引。
這是一個基於lat和lng更新數據庫的示例語句。
INSERT INTO pano_raw (latlng) VALUES(GeomFromText('POINT(-72.34 32.45)'));
我想創建一個基於上述語句的觸發器,當我單獨更新lat和lng時,它會自動更新列。由於查詢是專用的,每次使用SQL都會更新空間數據列。只寫一個觸發器(理論上)會更容易,當我向表中寫入一個簡單的十進制值時它將更新。
我遇到的問題是語法問題。這是我的最好的(2小時拍攝)。
SET @sql := CONCAT('POINT(',pano_raw.lng,' ',pano_raw.lat,')');
CREATE TRIGGER trig_pano_raw BEFORE INSERT ON pano_raw
FOR EACH ROW
BEGIN
SET pano_raw.latlng = GeomFromText(@sql));
END;
CREATE TRIGGER trig_pano_raw BEFORE UPDATE ON pano_raw
FOR EACH ROW
BEGIN
SET pano_raw.latlng = GeomFromText(@sql));
END;
我真的很感謝幫助得到這個工作。
未知系統變量'latlng' – 2011-03-28 15:59:27
@Phil:對不起,更正了它。不知道'PointFromWKB()'和'POINT()'是否會做你想要的。 – 2011-03-28 16:04:26
DELIMITER $$ CREATE TRIGGER trig_pano_raw_up BEFORE UPDATE ON pano_raw FOR EACH ROW BEGIN \t \t UPDATE pano_raw SET經緯度= PointFromWKB(POINT(NEW.lat,NEW.lng)); END $$ DELIMITER; – 2011-03-28 16:13:29