Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: auto_increment
 
 автор: Unkind™   (26.06.2006 в 15:44)   письмо автору
 
 

А как узнать последний ID в таблице? А то если таблица очищена, то выбор последнего ID в таблице приводит к ошибке, а если просто будет удалены ряды, то получается, что auto_increment будет, например 100, а в таблице нет ни одного ID'а.


Даже не ID последний, а именно auto_increment как это появляется обычно после экспорта таблицы в phpMyAdmin с включенным флагом "auto_increment "...

   
 
 автор: valenok   (26.06.2006 в 16:41)   письмо автору
 
   для: Unkind™   (26.06.2006 в 15:44)
 

Последний id MySQL функцией MAX() .

   
 
 автор: Unkind™   (26.06.2006 в 16:46)   письмо автору
 
   для: valenok   (26.06.2006 в 16:41)
 

Таблица пустая...Какой еще последний...

   
 
 автор: Loki   (26.06.2006 в 19:21)   письмо автору
 
   для: Unkind™   (26.06.2006 в 15:44)
 

Тут есть пара тонкостей:
если таблица очищена при помощи

TRUNCATE table

или

DELETE FROM table

то автоинкремент сбратывается
Если же использовать

DELETE FROM table WHERE 1

то автоинкремент сохраняется.
Подозреваю что фича эта недокументированная, так что пользоваться ей на свой страх и риск.
А для чего нужно значение автоинкремента пустой таблицы?

   
 
 автор: Unkind™   (26.06.2006 в 19:50)   письмо автору
 
   для: Loki   (26.06.2006 в 19:21)
 

Вот как раз дело в том, что этот auto_increment остается...Просто я пишу скрипт баннерной сети и есть проблема...
Новый баннер сохраняется в папке с именем bid_id.php, где bid - ид баннера, у которого и стоит auto_increment. А если удалить баннер (допустим он был один всего), то получается, что в таблице
auto_increment начинается не с нуля, а чтобы сохранить новый баннер нужно достать bid из таблицы, а его там нет...Ведь в phpMyAdmin есть такое...=)

   
 
 автор: Unkind™   (28.06.2006 в 19:55)   письмо автору
 
   для: Unkind™   (26.06.2006 в 19:50)
 

Блин, че правда никто не знает? А то опять проблема...Когда последний ID был удален, то auto_increment не сбросилось, а узнать надо...Пойду пока в исходниках phpMyAdmin покапаюсь...Это уже последнее дело...Там пока найдешь нужный файл...=))

P.S. Ну вот...Непонятно чо-то...В форме есть checkbox с именем "auto_increment", в обработчике его нет...Странно...

   
 
 автор: Unkind™   (28.06.2006 в 20:07)   письмо автору
 
   для: Unkind™   (28.06.2006 в 19:55)
 

Нашел...В одном из подключаемых файлов...Что-то не разберу...

<?
//вырезано
    
$auto_increment '';
    
$result PMA_DBI_query('SHOW TABLE STATUS FROM ' PMA_backquote($db) . ' LIKE \'' PMA_sqlAddslashes($table) . '\'');
    if (
$result != FALSE) {
        if (
PMA_DBI_num_rows($result) > 0) {
            
$tmpres        PMA_DBI_fetch_assoc($result);
            if (isset(
$GLOBALS['auto_increment']) && !empty($tmpres['Auto_increment'])) {
                
$auto_increment .= ' AUTO_INCREMENT=' $tmpres['Auto_increment'] . ' ';
            }
//Куча всего
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования