Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день, всем!
Помогите найти ошибку, в триггерах почти новичок. Есть вот такой запрос на создание триггера:
DELIMITER $$
CREATE TRIGGER `trigger_create_file` BEFORE INSERT ON `outgoing`
FOR EACH ROW
BEGIN
IF NEW.`operator` != "0" THEN BEGIN
set @file = (SELECT concat("/tmp/", NEW.`phone_number`, ".call"));
select concat("Channel: SIP/", operator), "MaxRetries: 3", "RetryTime: 30",
"WaitTime: 60", "Context: outrt-8", concat("Extension: ", phone_number),
"Priority: 1", "Archive: yes" from outgoing where `status` = "wait" and
`phone_number` = NEW.`phone_number` into outfile @file;
END; END IF;
END$$
Суть в следующем, при добавлении записи в таблицу создать файл на диске, но имя файла не статическое, а зависит от значения переменной в этом и проблема, со статическим именем файла проблем никаких нет.
Вывод ошибки:
mysql> DELIMITER $$
mysql> CREATE TRIGGER `trigger_create_file` BEFORE INSERT ON `outgoing`
-> FOR EACH ROW
-> BEGIN
-> IF NEW.`operator` != "0" THEN BEGIN
-> set @file = (SELECT concat("/tmp/", NEW.`phone_number`, ".call"));
-> select concat("Channel: SIP/", operator), "MaxRetries: 3", "RetryTime: 30",
-> "WaitTime: 60", "Context: outrt-8", concat("Extension: ", phone_number),
-> "Priority: 1", "Archive: yes" from outgoing where `status` = "wait" and
-> `phone_number` = NEW.`phone_number` into outfile @file;
-> END; END IF;
-> END$$
ERROR 1064 (42000): 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 '@file;
END; END IF;
END' at line 9
mysql>
Неактивен
используйте подготовленные выражения
http://sqlinfo.ru/forum/viewtopic.php?id=363
Неактивен