|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.10.2011, 16:51 | #1 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
MS Server - внезапный взбрык автосчетчика
Добрый день!
У меня в тестовой таблице со студенческими декларациями первое поле Declaration_ID : автосчетчик (Identity). Заполнила 10 значений через Insert Into - все работало нормально и все добавилось, автосчетчик нормально оттикал. И вдруг ни с того, ни с сего - автосчетчик перестал увеличиваться, и не добавить ничего - ни Insert, ни вручную вбив в таблицу. А ограничение на это поле Unique - просто криком кричит - мол, должны быть в поле уникальные значения и все. Можно конечно Unique отключить, но ведь до этого все нормально добавлялось, и проблема не в ограничении, а в автосчетчике. А как "починить" счетчик? И с чем связаны подобные выкрутасы?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
|
22.10.2011, 19:01 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Это что-то из разряда мистичного. Покажите как вы создавали таблицу и автоинкриментное поле. Тип поля случайно не NUMERIC(1,0)?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.10.2011, 21:58 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Причина мегабанальна и мегатупая (по краймей мере с моей стороны была) - я разрешил пользуну вставлять в автоинкрементное поле значение. Т.Е. вернее разрешил пользователю выполнять INSERT в мою таблицу. Незнакомый с структурой пользователь вписал в эту команду внос поля, которое у меня было автоинкрементным, и дело было в том что значение в это поле пользователем вносилось не по порядку а вразбор, лишь бы было уникальным. После чего получился казус - при вносе новой записи, без указания автоинкрементного поля СУБД ругалось, что мол такое уже есть - и действительно такое уже было. Посему пришлось запретить пользователям работать INSERTом, и написать свою хранимою процедуру вставки и контроля вставляемых данных. Так что, блонди, проконтроллируй, может у тебя там в БД автоинкрементное поле случайно поимело значения не по порядку, где-то может дырка образовалась.
I'm learning to live...
|
|
22.10.2011, 22:10 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Stilet, а каким образом можно INSERT-ом вставить в автоинкриментное поле, если не пользоваться SET IDENTITY_INSERT ... ON? Какие-то еще другие возможности в MSSQL есть?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.10.2011, 22:21 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Это ты верно подметил, видать лоханулся я где-то с этим параметром, или случайно выключил... Впрочем в любом случае хранимая процедура вставки оказалась эффективнее, я не жалею.
I'm learning to live...
|
|
23.10.2011, 12:39 | #6 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Дорогой Аватар, я прошу прощения за молчание - просто реальная жезнь требует моего пермонентного присутствия в прямом эфире)))
Вот как создавалось поле: Код:
Код:
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Последний раз редактировалось Blondy; 23.10.2011 в 12:46. |
23.10.2011, 13:12 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
23.10.2011, 13:14 | #8 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Сейчас гляну))
Куда мне до триггеров))) Мы такого пока не проходили))))) Видим следующее: 1) То, что видим до добавления: первой строчки уже давно нет, она была тестовой, и после ее удаления все прекрасно добавлялось 2) Добавляем Insert-ом и слушаем, как среда ругается 3) Добавляем вручную и также слушаем ругань
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Последний раз редактировалось Stilet; 23.10.2011 в 16:22. |
23.10.2011, 16:23 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Не... Где-то ты еще чегоенто крутанула лишнего...
Хорошо бы посмотреть полный скрипт базы, создания, обьявления, внесения и пр...
I'm learning to live...
|
23.10.2011, 21:07 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Blondy, если еще глючную таблицу не удалили (а скорее всего именно этим и закончится) интересно посмотреть, что вернет следующий запрос:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 23.10.2011 в 21:36. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
MS SQL Server: назначение автосчетчика полю уже существующей таблицы | Blondy | SQL, базы данных | 13 | 08.10.2011 23:33 |
GlassFish Server 3 Server cannot start. Port is occupied. | NixonKNR | Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) | 0 | 08.04.2011 01:10 |
Проблема с компом, внезапный переход в ждущий режим. | VintProg | Операционные системы общие вопросы | 1 | 10.09.2010 12:00 |
[c++] Client-Server: GET request refused by the server | Pumych | Помощь студентам | 2 | 22.08.2010 23:36 |
Доступ к БД (SQL server) в ОС Windows server 2003 | Mann | SQL, базы данных | 2 | 07.12.2008 19:15 |