2016-07-13 2 views
0

Я использую WampServer с MySQL Version: 5.7.9 и phpMyAdmmin Версия: 4.5.2MySQL вставить запрос, если условие соответствует после вставки триггера

Я пытаюсь написать после вставки триггером на Table1, чтобы вставить данные в таблице 2, если данные не существуют в таблице 2. Ниже мой запрос:

DROP TRIGGER IF EXISTS `insert_customer`; 
CREATE TRIGGER `insert_customer` AFTER INSERT ON `installations` 
FOR EACH ROW BEGIN 
    IF (SELECT COUNT(*) FROM `customers` WHERE `customers`.`phone` = NEW.`phone`) = 0 
    THEN INSERT INTO `customers` (`phone`, `imei`, `platform`, `version_code`) VALUES (NEW.`phone`, NEW.`imei`, NEW.`platform`, NEW.`version_code`); 
    END IF; 
END; 

Это дает мне следующее сообщение об ошибке:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 

Я попытался с разделителем тоже:

DROP TRIGGER IF EXISTS `insert_customer`; 
DELIMITER | 
CREATE TRIGGER `insert_customer` AFTER INSERT ON `installations` 
FOR EACH ROW BEGIN 
    IF (SELECT COUNT(*) FROM `customers` WHERE `customers`.`phone` = NEW.`phone`) = 0 
    THEN INSERT INTO `customers` (`phone`, `imei`, `platform`, `version_code`) VALUES (NEW.`phone`, NEW.`imei`, NEW.`platform`, NEW.`version_code`) 
    END IF; 
END; 
| 
DELIMITER ; 

Это дает мне следующее сообщение об ошибке:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END IF; 
END' at line 5 

Что я делаю wron g здесь? Любая помощь?

+1

И ошибки, которые они дают, являются ...? – Uueerdo

ответ

0

Мое предположение - дополнительный разделитель; попробуйте изменить

END; 
| 

в

END| 
+0

все еще получают ту же ошибку, даже после того, как примените ваше предложение. :( – Muntasir

0

Наконец я получил его. Правильный SQL:

DROP TRIGGER IF EXISTS `insert_customer`; 
DELIMITER | 
CREATE TRIGGER `insert_customer` AFTER INSERT ON `installations` 
FOR EACH ROW BEGIN 
    IF (SELECT COUNT(*) FROM `customers` WHERE `customers`.`phone` = NEW.`phone`) = 0 THEN 
     INSERT INTO `customers` (`phone`, `imei`, `platform`, `version_code`) VALUES (NEW.`phone`, NEW.`imei`, NEW.`platform`, NEW.`version_code`); 
    END IF; 
END;| 
DELIMITER ; 

The; в конце моего запроса INSERT решена моя проблема. : D

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