2015-07-22 3 views
0

помощь, пожалуйста, нужно последний в таблицеfz5_user_map в gr_idувеличить значение каждый раз, после того, как другой таблицы user_desc измененияОшибка с NEW. OLD. MySQL запускает регистрацию в СЦИ

CREATE 
DEFINER = 'root' TRIGGER TEST3.trigger1 
AFTER INSERT 
ON TEST3.fz5_user_desc 
FOR EACH ROW BEGIN 
INSERT INTO `fz5_user_map` Set `NEW.gr_id` = LAST_INSERT_ID (`gr_id`) +1; 
fz5_user_map 
---------- 
id | gr_id 
1 | 1 
2 | 1 

см с NEW. OLD. показать ошибки

Регистрация не удалось: Неизвестный столбец 'NEW.gr_id' в 'списке поля' SQL = INSERT INTO user_desc

, как это может быть сделано без использования NEW. OLD.?

BEGIN UPDATE `fz5_user_map` SET `gr_id` = (`gr_id` + 1); 

как изменить только последнее значение в gr_id?

ответ

0

NEW ссылки на TEST3.fz5_user_desc и вы пытаетесь вставить в fz5_user_map, так что Set NEW.gr_id = LAST_INSERT_ID ( gr_id ) +1; не будет работать. Вы не можете вставлять в таблицу действие триггера вставки (приводит к бесконечному циклу).

Это должно работать:

INSERT INTO fz5_user_map(gr_id) VALUES(NEW.gr_id+1); 
+0

снова ошибка регистрации не удалось: Неизвестный столбец 'NEW.gr_id' в 'списке полей' SQL = INSERT INTO user_desc –

+0

как без NEW. OLD. используя IF ELSE, найдите последнее значение в gr_id и измените? или, может быть, заказать? –

+0

Вы используете правильный SQL? Я тестировал этот ответ, прежде чем публиковать его, работает как прелесть. 1 разница: у меня нет всего вашего кода и вашей модели данных. –

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