ОБСУЖДЕНИЕ

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

10 ответов 7,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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