• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы Samuel
  • Дата начала Дата начала
S

Samuel

Здравствуйте.
Есть таблица, в которой поле "ID" является первичным ключом и автоинкрементируется. Как при добавлении новой записи в эту таблицу узнать ID, который будет у этой строки ?
 
После вставки делай запрос к таблице: SELECT max(ID) FROM MY_TABLE.
Полученное значение - и будет твой IDшник.
 
После вставки делай запрос к таблице: SELECT max(ID) FROM MY_TABLE.
Полученное значение - и будет твой IDшник.
Сакс прав, не обязательно. Ведь может присвоится и какой-нить из свободных, если были удаления.
Что бы знать точно надо знать какая бд и как вставляют=)
Samuel
А еще есть LAST_INSERT_ID() в Mysql и ей подобные в других бд..
 
Если СУБД нормальная, и есть такой объект, как счётчик, и у него делается автоинкремент, тогда всё будет работать нормально.
А если при вставке присваивается не ID+1, а какой-нибудь свободный, тогда нужно настроить гарантированный автоинкремент, или использовать другую СУБД.
 
тогда нужно настроить гарантированный автоинкремент, или использовать другую СУБД.
Не поверите, но очень часто так бывает, что напорядок лучше заполнять дырки в счетчике, чем наращивать его. А вывод - менять субд вообще ересь.
 
что за СУБД?

часто достаточно использовать конструкцию
[sql]insert .... returning ...[/sql]

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab