lat、lng、latlng の 3 つの列を持つ pano_raw というテーブルがあります。
lat と lng は単なる 10 進数 (10,3) であり、latlng はタイプ POINT の空間インデックスです。
これは、緯度と経度に基づいてデータベースを更新するステートメントの例です。
INSERT INTO pano_raw (latlng) VALUES( GeomFromText( 'POINT(-72.34 32.45)' ));
上記のステートメントに基づいてトリガーを作成しようとしています。これにより、緯度と経度を個別に更新すると、列が自動的に更新されます。クエリが特殊化されているため、SQL を使用して毎回空間データ列を更新するのは面倒です。単純な 10 進数値をテーブルに書き込んだときに更新されるトリガーを (理論上は) 書くだけの方がはるかに簡単です。
私が抱えている問題は構文にあります。これが私のベストです(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;
これが機能するように助けていただければ幸いです。