0
lat, lng 및 latlng 3 열을 포함하는 pano_raw라는 테이블이 있습니다.공간 데이터를 기반으로하는 트리거
lat 및 lng는 소수 (10,3)이며 latlng는 POINT 유형의 공간 인덱스입니다.
이것은 lat 및 lng를 기반으로 데이터베이스를 업데이트하는 명령문입니다.
INSERT INTO pano_raw (latlng) VALUES(GeomFromText('POINT(-72.34 32.45)'));
는 제가 별도로 위도와 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' –
@Phil : 죄송합니다. 수정했습니다. 'PointFromWKB()'와'POINT()'가 당신이 원하는 것을 할 수 있을지 확신 할 수 없습니다. –
DELIMITER $$ 가 \t \t 업데이트 pano_raw을 BEGIN EACH ROW FOR pano_raw ON UPDATE 전에 트리거 trig_pano_raw_up을 만들 SET 위도와 경도 = PointFromWKB (POINT (NEW.lat, NEW.lng)); END $$ DELIMITER; –