Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите получить автоинкремент (Vadim) 26/10/2006 - 16:58:03
      Re: Помогите получить автоинкремент (ita) 26/10/2006 - 17:31:14
      Re: Помогите получить автоинкремент (Vadim) 26/10/2006 - 18:15:56
      Re: Помогите получить автоинкремент (WebGirl) 28/10/2006 - 22:31:40
      Re: Помогите получить автоинкремент (Vadim) 30/10/2006 - 10:22:58
      Re: Помогите получить автоинкремент (Vadim) 03/11/2006 - 09:41:42
      Re: Помогите получить автоинкремент (Алексей) 21/10/2008 - 10:03:21

> Original message text:
> From: Vadim - 26/10/2006 - 16:58:03
> Subject:Помогите получить автоинкремент
> -----------------
> При создании новой записи использую триггер BEFOR INSERT, чтобы в скрытом поле записи создавалась ссылка, в которой участвует id создаваемой записи. Однако в момент BEFOR INSERT id записи еще не присвоен, так что пытаюсь получить автоинкремент записи через SELECT LAST_INSERT_ID(), но получаю что-то странное - у меня 19 запись, а он мне выдает 59674. У меня такое подозрение, что етот LAST_INSERT_ID() берет последний автоинкремент из всех работающих таблиц вообще, а не из той конкретно, где триггер срабатывает. Как мне его ткнуть носом, чтоб он из этой таблицы id брал? Триггер такой:
>
> BEGIN
> set @New_id = (SELECT LAST_INSERT_ID())+1;
> ...
> END
>
> Знаю что можно увидеть автоинкремент по
>
> SHOW TABLE STATUS FROM db_name like 'table_name'
>
> но как его оттуда выковырять, чтобы использовать можно было?
>


From: Vadim - 30/10/2006 - 10:22:58
Subject:Помогите получить автоинкремент
-----------------
> select max(auto_increment) from table_name

Спасибо, но думаю такое не подойдет - если прямо так select и писать, то я уже говорил - поля "auto_increment" не существует - запрос ругается, а если писать max(id), то мы просто получим максимальное значение поля id из таблицы, что тоже не верно, поскольку, если последняя запись была удалена (ошибочно ввели), то автоинкремент сдвинется, а max(id) не измениться.
Пример: было 19 записей, при вводе 20ой записи max(id)=19, а автоинкремент соответственно будет 20. Теперь удаляем 20ую запись - max(id)=19 опять, а автоинкремент уже 21. Т.е. в ссылке мы получим число 20, хотя id у записи будет 21.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
34326



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |