Почему не добавляются строки в таблицу со счетчиком?

Meb
Дата: 06.09.2005 10:53:03
В базе есть таблица CCustomNSItems со следующими полями: CustomNSItemID (индексированное ключевое поле, совпадения не допускаются, тип данных "счетчик"), ExpID, CustomID, ProtoID, ItemName, Cnt, ItemSort, Price, ToSheme, Top. Эта таблица заполняется следующим запросом:

INSERT INTO CCustomNSItems ( ExpID, CustomID, ProtoID, ItemName, Cnt, ItemSort, Price, ToSheme, [Top] )
SELECT [ICustomNSItems].[CustomNSItemID], [CCustoms].[CustomID], [ICustomNSItems].[ProtoID], [ICustomNSItems].[ItemName], [ICustomNSItems].[Cnt], [ICustomNSItems].[ItemSort], [ICustomNSItems].[Price], [ICustomNSItems].[ToSheme], [ICustomNSItems].[Top]
FROM ICustomNSItems INNER JOIN CCustoms ON ICustomNSItems.CustomID = CCustoms.OldCustomID;

С некоторых пор этот запрос перестал работать, возникает ошибка: "нарушение уникальности ключа". По идее, при вставке данных должна добавляться строка, а в поле CustomNSItemID генериться новое значение. А на практике запрос пытается вставить записи с ранее использованными значениями счетчика CustomNSItemID (проверял, сделав поле CustomNSItemID не ключевым). Может кто объяснит как с этим бороться?
eGorkaBy
Дата: 06.09.2005 11:06:57
Сделайте Insert в CustomNSItemID со следующим свободным номером, счетчик восстановится
Meb
Дата: 06.09.2005 11:16:21
При попытке добавить строку в таблицу вручную, счетчик действительно выдает значение уже занятое. А из-за чего счетчик полетел? База раньше была в Access97 там такого не наблюдалось. Может это из-за автосжатия при закрытии? Как добиться того, чтобы ошибка не появлялясь вновь?
Тяп-ляп
Дата: 06.09.2005 11:26:52
Не выносит аксесс тяжелых условий эксплуатации и/или небрежности в программировании.
Смотри по форму топики про надежность и стабильность аксессных баз
eGorkaBy
Дата: 06.09.2005 11:28:16
Вы или кто то еще делал Insert или Update с указанием конкретного значения для счетчика (свободного и меньше текущего) после этого счетчик начинает расти от этого значения. В 97'м то же самое
АлексейК
Дата: 06.09.2005 11:42:47
eGorkaBy
Вы или кто то еще делал Insert или Update с указанием конкретного значения для счетчика (свободного и меньше текущего) после этого счетчик начинает расти от этого значения. В 97'м то же самое


вывод надо принудительно сделать вставку значения больше максимального
Meb
Дата: 06.09.2005 11:44:39
Да, нашел свою тему:
http://www.sql.ru/forum/actualthread.aspx?tid=108865&hl=%f1%e1%ee%e9+%f1%f7%e5%f2%f7%e8%ea%e0
Похоже Access глюкавит. И скорее всего сбой связан с автосжатием баз при выходе (Access 2003). Так как эта база не один год работал на Access 97 и ни разу подобных проблем не было (сжималась она довольно редко и в "опустошенном" состоянии).
Владимир Саныч
Дата: 06.09.2005 11:52:50
На всякий случай (для тех, кто не читает рекомендации по публикации сообщений):
http://www.sql.ru/faq/faq_topic.aspx?fid=214