![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Что случится если ключевое поле (int) автоинкремент переполнится(будет больше чем 32байта)?
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
что за СУБД?
Добавлено через 4 минуты и 4 секунды например,mySQL будет после заполнения пытаться найти свободное значение(если были удалены какие то строки ранее).И только если не найдет,будет ругаться ошибкой переполнения.Сейчас работаю MS SQL Server,но как тут,точно не знаю.Скорее всего тоже будет ругаться.А что тебе стоит установить сразу последнее значение автоинкремента и добавив строку увидеть,что произойдет? ![]() -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
СУБД MSSQL Server.
Так если я последнеезначение поставлю, то SQL Server возьмет предыдущее (хотя можно в цикле всю БД забить) -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
Если берет предыдущее,значит,тоже начинает перебирать назад значения и искать свободные.Подставил соответственно первое попавшееся.Поставь последнее и предпоследнее и он тебе поставит третье с конца.
-------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
Idsa |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: нет Всего: 62 |
Странно, но я такого поведения не заметил. Я создал таблицу с полем id int IDENTITY(2147483647,1). Уже при изменении второй записи было вызвано исключение "Arithmetic overflow error".
Насколько я понял, в MSSQL это не работает. Да и вообще, на мой взгляд, в этом нет никакой необходимости... ведь в некоторых таблицах на величине id может быть завязана определенная логика (например, чем больше id, тем позже был сделан заказ). Я понимаю, что подобная логика не есть хорошо... но все же это может ввести в ступор некоторых "разработчиков".
Это точная информация? |
||||||
|
|||||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
форум,где я нашел эту информацию там сказали,что проверяли это и что MySQL так делает.
обычно создают отдельное поле для этого. -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: нет Всего: 62 |
Не спорю... Но ведь не зря подобные поля называют autoincrement'ными (не autodecrement'ными или autoнепонятночто). Так что, на мой взгляд, MSSQL делает все правильно ![]() Добавлено @ 14:14 Хотя было бы неплохо, если бы была опция, которая устанавливала бы поведение MSSQL при переполнении: искать пропущенные или генерировать исключение.
Почему именно 32 байта? Можно установить поле в bigint, что сведет практически на нет вероятность переполнения. Это сообщение отредактировал(а) Idsa - 22.8.2007, 14:15 |
|||
|
||||
Lunatikus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
+2 а поле и есть автоинкрементное.Основное его действие-увеличиваться на указанный шаг при добавлении поля.Остальное-дополнения,которые облегчают жизнь.Кстати насчет того,чтобы добавить функцию выбора типа поведения AIinc'а: видимо,решили сбросить эту работу на программистов-в конце концов программер может замутить такое сложное и разнообразное поведение,которое создателям MS SQL Srv не снилось.Да и загружать СУБД лишним не следует. -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
||||
|
|||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: нет Всего: 62 |
Что-то не похоже, что бы разработчики СУБД придерживались этого критерия... Особенно это касается Oracle 11g ![]() |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
не знаком ,такая зверюга?К тому же мы говрим о разработчиках MS SQL Srv.Oracle ваще отдельная песня...такс,кончаем флудить и ждем Artemon'а.Пусть-таки закроет тему или выскажет что-нибудь по поводу решения своего вопроса.
-------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 5 Всего: 9 |
id int IDENTITY(2147483647,-1). - будет уменшать до -2147483647
id int IDENTITY(-2147483647,1). - будет увеличивать до 2147483647 это больше 4 милиарда. ну если не хватает можно ползовать bigint. а то чтоб после переполнения искать пропуски, по моему не правилно |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
интересно,что за таблица может содержать ОДНОВРЕМЕННО больше 4млрд записей?
![]() -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 5 Всего: 9 |
например билинг.
4 милиард не так и много, если реално посмотреть |
|||
|
||||
Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 2 Всего: 6 |
ну не знаю,если честно,мне со своей колокольни видится более выгодным разбивать на несколько таблиц и делать механизм последовательного доступа к любым данным,фильтрации и т.д.
-------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 5 Всего: 9 |
для этого разработаны специальные механизмы.
но эта из другой песни |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |