powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL last_insert_id()
9 сообщений из 9, страница 1 из 1
MySQL last_insert_id()
    #39427397
asdff98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Проблема такая:
Есть 2 таблицы.
Shtat
|fil_id int,PK |
|fam varchar(45) |

Filials
|fil_id int, PK, Auto_increment |
|yprav vachr(45) |

Нужно, чтобы после заполнения таблицы Filials автоматом заполнялось поле fil_id таблицы Sotrudniki.
Написал триггер в таблицу Sotrudniki такого вида:
Код: sql
1.
2.
3.
4.
5.
CREATE DEFINER=`root`@`localhost` TRIGGER `test`.`filials_AFTER_INSERT` AFTER INSERT ON `filials` FOR EACH ROW
BEGIN
set @ins_f_id := last_insert_id();
insert into shtat(Филиал_id) values (@ins_f_id);
END


В итоге это работает через раз. То есть пишу
Код: sql
1.
insert into filials(fil_id, yprav) values (Null,'fam1')


Получаю:
в таблице filials fil_id = 1, в таблице Shtat в поле fil_id 1, все ок. НО truncate обе таблицы, повторяю тот же инсерт получаю значение 2 в fil_id таблицы Shtat, хотя в Filials 1.
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427402
asdff98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И подскажите пожалуйста, может есть еще какая-нибудь возможность брать данные из последнего инсерта. Уже несколько часов убил.
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427429
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdff98,

По идее нужно брать new.fil_id, а не last_insert_id()
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427430
asdff98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПо идее нужно брать new.fil_id, а не last_insert_id()

Пытался, ругается мол нет такой таблицы new
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427436
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdff98,

Должно работать.
Вот даже на официальном форуме пример нашел - https://forums.mysql.com/read.php?99,635045,635048#msg-635048
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427441
asdff98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft Должно работать.
Вот даже на официальном форуме пример нашел - https://forums.mysql.com/read.php?99,635045,635048#msg-635048

Довольно забавно. Если написать так, то шлет нафиг.
Код: sql
1.
2.
set @ins = select new.fil_id;
insert into shtat (fil_id) values (@ins)


А если так, то все хорошо)
Код: sql
1.
insert into shtat(fil_id) select new.fil_id;



Спасибо, буду дальше ковырять!
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427455
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdff98
Код: sql
1.
set @ins = select new.fil_id;

Я вообще такого синтаксиса не знаю.
Если уж хочется через промежуточную переменную, то так:
Код: sql
1.
set @ins = new.fil_id;
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427456
asdff98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
тоже ругается
...
Рейтинг: 0 / 0
MySQL last_insert_id()
    #39427465
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdff98miksoft,
тоже ругаетсяПоказывайте исходный текст триггера и сообщение об ошибке полностью.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL last_insert_id()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]