2014-09-11 36 views
1

我新的MySQLPHPWAMP,成功創建了扳機沒有if語句,它給了錯誤,當我執行它的錯誤是:觸發器如果語句的語法錯誤

1064 - 你在你的SQL錯誤句法;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊 'IF(NEW.userloc_lat = '91 0.000000' AND 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 ; 

我認爲只會出現我正在看的syntanx錯誤。的userloc_latuserloc_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',如果我從消除新的東西你建議在插入#1054時說 - '字段列表'中的未知列'userloc_lat'。我認爲它不承認它 – Sarz 2014-09-11 11:46:47

+0

你有一個錯字。 'userloc_lan'應該是'userloc_lon'。 – Barmar 2014-09-11 11:52:50

+0

感謝它的工作! – Sarz 2014-09-11 11:54:14