![]() |
|
Модераторы: Akina |
![]()
|
|
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
Есть таблица
В которой хранится древовидная структура. Мне соответственно нужно вставлять туда данные. parentId – это ссылка на родительскую запись. Чтобы сформировать запрос, мне нужно знать, какой при первом инсерте будет присвоен id. Я, конечно могу это узнать, считав последнее значение id. Но, если записи были удалены, id пропускается. Например, если последнее id было равно 3, после чего мы добавили 5 записей и удалили их, то при инсерте, после id = 3, будет идти id = 9. Так как же мне узнать, какой будет следующий id, если записи были удалены? СУБД SqlCe, но думаю, это не принципиально Может, ответ на этот вопрос можно было найти в гугле, но я не знаю, по каким кеям его искать… |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
В общем случае это невозможно. Следует создать запись и затем запросом получить из неё уже присвоенный ID или в рамках текущей транзакции использовать last_inserted_id() или аналогичную функцию - в SqlCe такая обязана быть, а мне искать её фамилию влом. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 1 Всего: 44 |
Artemon, не правильно.
Смотри:
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: нет Всего: 211 |
@@IDENTITY Добавлено через 3 минуты и 22 секунды Rohoss IDENT_CURRENT возвращает номер последней сгенерированного значения для счетчика таблицы. |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
...,3,9 Запрос который я показал вернет 10. Что именно не правильно ? я думаю ошибка будет только в том случае, если мы удалим ВСЕ записи, тогда такой запрос не сработает корректно. Это сообщение отредактировал(а) Artemon - 21.4.2010, 08:35 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: нет Всего: 211 |
Artemon
Допустим данные в таблице на данный момент 1 а 2 б 3 в 4 г удалили последнюю строку, данные в таблице 1 а 2 б 3 в твой запрос вернет 3, но на самом деле номер следующей записи будет не 3 а 5. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Почему бы тебе не узнать какой при первом инсерте был присвоен id?(см пост azesmcar) Потому как "что будет" - ведомо лишь сам знаешь кому. Ведь первого инсерта может и не быть, он может и откатиться. А еще у нас может быть многопользовательская среда, и одновременно могут проинсертить и пока еще не закоммитить стопиццот сессий. И как мы можем тогда прогнозировать какой айди нам вернет идентити? Это сообщение отредактировал(а) Zloxa - 21.4.2010, 09:22 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
azesmcar, ты прав
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
К счастью, была возможность изменить структуру таблицы
|
|||
|
||||
| Нестаро |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.7.2010 Репутация: нет Всего: нет |
azesmcar разве если удалим третью строку следующим значением будет 5 ?
|
|||
|
||||
| chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 2 Всего: 9 |
Нестаро
Удалили 4-тую строку -------------------- Фсё будет хорошо!!! |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |