мускуль AUTO_INCREMENT

12
malls
На сайте с 08.08.2005
Offline
255
1063

Народ кто-нибудь знает как можно получить из КОНКРЕТНОЙ таблицы текущий AUTO_INCREMENT, кроме как методом:

SHOW TABLE STATUS

Покурил доки - вроде ничего другого нет, или плохо курил?

Апокалипсис
На сайте с 02.11.2008
Offline
391
#1

SELECT max(id) ?

Записки нищего (http://zapiskinishego.ru) - мой личный блог Услуги php программиста. Очень нужна любая работа. Не покупают? Поведенческий аудит интернет-магазина за 5000 руб. (/ru/forum/990312)
Dreammaker
На сайте с 20.04.2006
Offline
569
#2

malls, а в чём задача, может быть mysql_insert_id() выходом будет?

Dreammaker добавил 02.04.2009 в 14:16

Апокалипсис:
SELECT max(id) ?

Если айди удалили, то макс - не будет текущим autoincrementом.

alexspb
На сайте с 14.11.2005
Offline
187
#3

malls, вот здесь обсуждение, может подскажет стоит ли искать другие методы:

http://xpoint.ru/forums/computers/dbms/mysql/thread/32048.xhtml

MASTAKILLA
На сайте с 11.05.2006
Offline
160
#4

SELECT `AUTO_INCREMENT` FROM `information_schema`.`TABLES` WHERE (`TABLE_NAME`='база' AND `TABLE_SCHEMA`='таблица')

Если есть доступ.

malls
На сайте с 08.08.2005
Offline
255
#5
Dreammaker:
malls, а в чём задача, может быть mysql_insert_id() выходом будет?

Не так просто... я могу вставить id=5 и вернет 5, при общем количестве 1000...

alexspb:
malls, вот здесь обсуждение, может подскажет стоит ли искать другие методы:
http://xpoint.ru/forums/computers/dbms/mysql/thread/32048.xhtml

там пока не пришли к общему мнению :)

MASTAKILLA:
SELECT `AUTO_INCREMENT` FROM `information_schema`.`TABLES` WHERE (`TABLE_NAME`='база' AND `TABLE_SCHEMA`='таблица')
Если есть доступ.

вариант, но немного громоздкий.

Интересно можно SHOW TABLE STATUS превратить в таблицу как то? Т.е. чтоб потом делать, примерно так:

SELECT * FROM (SHOW TABLE STATUS) ???

т.е. в принципе как его добыть не вопрос, вопрос в красоте решения.

Dreammaker
На сайте с 20.04.2006
Offline
569
#6
malls:
я могу вставить id=5 и вернет 5, при общем количестве 1000...

Хм, если вы меняете аутоинкремент или сами его вставляете, то у вас что-то не так в датском королевстве. Он на то и аутоинкремент чтобы его не менять. или я неправильно понял?

DA
На сайте с 04.02.2005
Offline
165
#7

срасивее тейбл статус решения нет

тыщ-пыщ
J
На сайте с 02.02.2009
Offline
53
#8
Dreammaker:
Хм, если вы меняете аутоинкремент или сами его вставляете, то у вас что-то не так в датском королевстве. Он на то и аутоинкремент чтобы его не менять. или я неправильно понял?

всё правильно, - автоинкремент не изменится если его мануально не альтерить.

Пруфконтент MyISAM и InnoDB


mysql> insert into autoinc set name= 'a';
Query OK, 1 row affected (0.00 sec)

mysql> insert into autoinc set name= 'b';
Query OK, 1 row affected (0.00 sec)

mysql> insert into autoinc set name= 'c';
Query OK, 1 row affected (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 3 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT Auto_increment FROM information_schema.tables WHERE table_name='autoinc';
+----------------+
| Auto_increment |
+----------------+
| 4 |
+----------------+
1 row in set (0.00 sec)

mysql> delete from autoinc where id=2;
Query OK, 1 row affected (0.00 sec)

mysql> insert into autoinc set name= 'd';
Query OK, 1 row affected (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 4 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT Auto_increment FROM information_schema.tables WHERE table_name='autoinc';
+----------------+
| Auto_increment |
+----------------+
| 5 |
+----------------+
1 row in set (0.00 sec)

jumash добавил 02.04.2009 в 18:26

DJ_AlieN:
срасивее тейбл статус решения нет

Может прав не хватить

malls
На сайте с 08.08.2005
Offline
255
#9
Dreammaker:
Хм, если вы меняете аутоинкремент или сами его вставляете, то у вас что-то не так в датском королевстве. Он на то и аутоинкремент чтобы его не менять. или я неправильно понял?

Рассмотрим например REPLACE что будет?

Да и вообще если я только что вставлял в таблицу №2, а мне нужен инкримент из таблицы №1???

Короче mysql_insert_id() не хорошее решение.

J
На сайте с 02.02.2009
Offline
53
#10
malls:
Рассмотрим например REPLACE что будет?
Да и вообще если я только что вставлял в таблицу №2, а мне нужен инкримент из таблицы №1???
Короче mysql_insert_id() не хорошее решение.

Так вам шашечки или ехать?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий