2014-09-11 2 views
1

Я новичок в MySQLPHPWAMP, мой триггер успешно создан без если заявление, он дает ошибку, когда я исполню ее ошибка:Триггеры Если ошибка синтаксиса оператор

1064 - У Вас есть ошибка в вашем SQL синтаксис; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «IF (NEW.userloc_lat = '91 0,000000» И NEW.userloc_lan = «181,000000») THEN 'в строке 6

DELIMITER $$ 
CREATE TRIGGER before_new_userloc 
    BEFORE INSERT ON tbl_userloc 
    FOR EACH ROW BEGIN 

    INSERT INTO tbl_unknown_site 
    IF (NEW.userloc_lat ='91.000000' AND NEW.userloc_lan = '181.000000') 
    THEN SET 
    unknown_site_lat = NEW.userloc_lat, 
    unknown_site_lon = NEW.userloc_lon, 
    unknown_site_stt = NOW(), 
    unknown_site_dtm = NEW.userloc_dtm, 
    unknown_site_appid = NEW.userloc_appid, 
    unknown_site_cellid = NEW.userloc_cellid, 
    unknown_site_lacid = NEW.userloc_lacid, 
    unknown_site_subid = NEW.userloc_id; 

END$$ 
DELIMITER ; 

Я думаю, что будет только синтаксическая ошибка, на которую я смотрю.

Тип данных userloc_lat и userloc_lon является decimal(10,6)

ответ

1

IF должен быть перед INSERT:

DELIMITER $$ 
CREATE TRIGGER before_new_userloc 
    BEFORE INSERT ON tbl_userloc 
    FOR EACH ROW BEGIN 
     IF (NEW.userloc_lat ='91.000000' AND NEW.userloc_lon = '181.000000') 
     THEN 
      INSERT INTO tbl_unknown_site 
      SET 
       unknown_site_lat = NEW.userloc_lat, 
       unknown_site_lon = NEW.userloc_lon, 
       unknown_site_stt = NOW(), 
       unknown_site_dtm = NEW.userloc_dtm, 
       unknown_site_appid = NEW.userloc_appid, 
       unknown_site_cellid = NEW.userloc_cellid, 
       unknown_site_lacid = NEW.userloc_lacid, 
       unknown_site_subid = NEW.userloc_id; 
     END IF; 

    END$$ 
DELIMITER ; 
+0

это дает ошибку # 1054 - Неизвестный столбца 'userloc_lan' в 'NEW', если я удалить NEW от того, что вы сказали, что он говорит во вставке # 1054 - Неизвестный столбец userloc_lat в списке полей. Я думаю, что это не узнает – Sarz

+0

У вас есть опечатка. 'userloc_lan' должен быть' userloc_lon'. – Barmar

+0

Спасибо, что работает! – Sarz

Смежные вопросы