Мой оператор вставки:
INSERT INTO myTable (inst_id,user_id,app_id,type,accessed_on)
VALUES (3264,2580,'MyApp','Renew',Now);
... где все значения отформатированы правильно.В таблице есть вышеперечисленные поля и еще одно, длинное поле ключа с автоинкрементом int.Внешними ключами являются 'inst_id', 'user_id' и 'app_id'.
Я получаю эту ошибку от Access:
... и следующую ошибку от VS 2005когда происходит ошибка:
System.Data.OleDb.OleDbException: изменения, запрошенные вами в таблице, не увенчались успехом, так как они могут создать повторяющиеся значения в индексе, первичном ключе или отношении.Измените данные в поле или полях, которые содержат повторяющиеся данные, удалите индекс или переопределите индекс, чтобы разрешить повторяющиеся записи, и повторите попытку.
При выполнении этого запроса вставки я могу просмотреть базу данных иубедитесь, что каждое из значений внешнего ключа существует в соответствующих таблицах и хранится в течение нескольких месяцев (для конкретного примера, который я использую).Эти поля также установлены так, чтобы я мог иметь дубликаты, так что это не проблема.Вызовы такого рода в других таблицах прекрасно работают.Мне не нужно указывать значение ключа автоинкремента в запросе вставки, оно добавляет его для меня автоматически (как и должно быть).
Странно то, что если я сделаю это в своем коде:
try
{
//Execute the query here...
}
catch
{
//Execute the same query again
}
... или если я просто попытаюсь выполнить это дважды в Access, это сработает.
Кто-нибудь сталкивался с этим раньше?Опять же, этот тип вставки работает для других таблиц, все внешние ключи присутствуют в соответствующих таблицах, первичный ключ этой таблицы установлен как «Автоинкремент», и все поля (кроме поля первичного ключа, конечно)разрешить дублирование.
Есть идеи?
РЕДАКТИРОВАТЬ: Самый большой ключ перед вставкой: 343085
.Самый большой ключ после вставки: 343086
.Формат:
id: AutoNumber (Field Size=Long Interger, New Values=Increment, Indexed=Yes - No Duplicates)
inst_id: Number (Field Size=Long Interger, Required=Yes, Indexed=Yes - Duplicates OK)
user_id: Number (Field Size=Long Interger, Required=Yes, Indexed=Yes - Duplicates OK)
app_id: Text (Field Size=255, Required=Yes, Indexed=Yes - Duplicates OK)
type: Text (Field Size=50, Required=Yes, Indexed=No)
accessed_on: Date/Time (Default Value=Now(), Required=Yes, Indexed=No)