Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
CyberAlfred
57 / 57 / 12
Регистрация: 16.12.2012
Сообщений: 480
1

Create trigger

18.07.2016, 11:34. Просмотров 143. Ответов 4
Метки нет (Все метки)

Всем привет.

Написал стриггер для логирования
MySQL
1
2
3
4
5
create trigger tplog_insert_personal AFTER INSERT ON personal
FOR EACH ROW BEGIN
 insert tp_log (id_personal, `date`,`bit`)
 select 3,NOW(),1
end
А он мне ошибку выдает
Error Code: 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 'insert tp_log (id_personal, `date`,`bit`) select 3,NOW(),1 end' at line 3 0.000 sec
Где синтаксис не правильный понять не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2016, 11:34
Ответы с готовыми решениями:

Trigger Que
Что такое Trigger Que? чтото гугл мне ничего членораздельного не ответил.

Ошибка в TRIGGER
Доброго времени суток, уважаемые Форумчане) Друзья, пытаюсь создать триггер...

Создание trigger в musql
Здравствуйте! Столкнулась со следующей проблемой: есть trigger ins, который...

помогите с триггером БД (TRIGGER). пожалуйста.
здравствуйте. помогите пожалуйста с триггером. разбирался с ним долго таки.не...

Максимально простой TRIGGER для ID сущностей
в общем мне нужно чтоб я мог с бекэнда подавать в БД сущность без айдишника, а...

4
Anvano
212 / 188 / 91
Регистрация: 12.05.2016
Сообщений: 552
18.07.2016, 13:14 2
две точки с запятой пропустил. после инсерта и после END;
0
CyberAlfred
57 / 57 / 12
Регистрация: 16.12.2012
Сообщений: 480
18.07.2016, 13:16  [ТС] 3
Anvano,
MySQL
1
2
3
4
5
create trigger tplog_insert_personal AFTER INSERT ON personal
FOR EACH ROW BEGIN
 insert tp_log (id_personal, `date`,`bit`)
 select 3,NOW(),1;
end;
так?
0
Anvano
212 / 188 / 91
Регистрация: 12.05.2016
Сообщений: 552
18.07.2016, 13:27 4
Ну, как-то так, да.

Только почему у вас в качестве ID вставляется константа = "3" ?
Вы же хотите наверное логировать ID вставляемой записи ?

SQL
1
2
INSERT tp_log (id_personal, `date`,`bit`)
 SELECT  NEW.id, NOW(), 1;
0
CyberAlfred
57 / 57 / 12
Регистрация: 16.12.2012
Сообщений: 480
18.07.2016, 13:42  [ТС] 5
Anvano, это id будет передаваться из таблицы personal. А поле для newid я еще не делал. это тестовая таблица.

Ошибку нашел. Подсказали. Надо в начале добавить
DELIMITER |
и все заработает
MySQL
1
2
3
4
5
DELIMITER |
CREATE TRIGGER tplog_insert_personal AFTER INSERT ON personal
FOR EACH ROW BEGIN
 INSERT INTO `tp_log` (`id_personal`, `date`, `bit`) SELECT (45 '45', NOW(),1 '1');
END;
0
18.07.2016, 13:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2016, 13:42

Can't update table 'address' in stored function/trigger because it is already used by statement which invoked
Есть триггер, который не позволяет добавлять в таблицу address строки, которые...

SHOW CREATE TABLE
При выполнении запроса SHOW CREATE TABLE `какая-то таблица`, результат мне...

If( select , 'delete', 'create' )
можно сделать так? IF( SELECT id FROM blm WHERE user = {$di} AND blc =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru