У меня есть таблица с именем pano_raw, которая имеет 3 столбца lat, lng и latlng.
lat и lng - просто десятичные числа (10,3), а latlng - пространственный индекс типа POINT.
Это пример оператора, который обновляет базу данных на основе широты и ширины.
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;
Я был бы очень признателен за помощь в получении этой работы.