Определение Id при добавлении строки

Тема в разделе "SQL", создана пользователем Samuel, 21 авг 2010.

  1. Samuel

    Samuel Гость

    Здравствуйте.
    Есть таблица, в которой поле "ID" является первичным ключом и автоинкрементируется. Как при добавлении новой записи в эту таблицу узнать ID, который будет у этой строки ?
     
  2. Over

    Over Well-Known Member

    Регистрация:
    4 июл 2007
    Сообщения:
    116
    Симпатии:
    0
    После вставки делай запрос к таблице: SELECT max(ID) FROM MY_TABLE.
    Полученное значение - и будет твой IDшник.
     
  3. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.472
    Симпатии:
    27
    Сакс прав, не обязательно. Ведь может присвоится и какой-нить из свободных, если были удаления.
    Что бы знать точно надо знать какая бд и как вставляют=)
    Samuel
    А еще есть LAST_INSERT_ID() в Mysql и ей подобные в других бд..
     
  4. Over

    Over Well-Known Member

    Регистрация:
    4 июл 2007
    Сообщения:
    116
    Симпатии:
    0
    Если СУБД нормальная, и есть такой объект, как счётчик, и у него делается автоинкремент, тогда всё будет работать нормально.
    А если при вставке присваивается не ID+1, а какой-нибудь свободный, тогда нужно настроить гарантированный автоинкремент, или использовать другую СУБД.
     
  5. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.472
    Симпатии:
    27
    Не поверите, но очень часто так бывает, что напорядок лучше заполнять дырки в счетчике, чем наращивать его. А вывод - менять субд вообще ересь.
     
  6. ????

    ???? Гость

  7. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.472
    Симпатии:
    27
    2Sax
    ОБС
     
  8. ????

    ???? Гость

    sax_ol
    RTFM, жирный тролль :)
     
  9. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.472
    Симпатии:
    27
    кто бы говорил. У самаого таких потов тысячи 3=)
     
  10. ????

    ???? Гость

    sax_ol
    смысл есть, но ты не можешь его уловить. а жаль )
     
  11. Samuel

    Samuel Гость

    Ну СУБД MS SQL Server.
    Разобрался. В пределах хранимки лучше использовать функцию SCOPE_IDENTITY(), которая и вернет нужный ID.
     
Загрузка...

Поделиться этой страницей