Почему MS Access 2007 не разрешает вставку строки, а затем разрешает ее при следующей попытке вставки?

моя инструкция insert:

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:access error

...и следующая ошибка от VS 2005, когда она ошибается:

6 ответов


здесь идет какая-то старая память...

попробуйте добавить поле timestamp в таблице.

Я не могу точно вспомнить, почему это работает - что-то связано с доступом, имеющим трудности с идентификацией записей / возможно, какой-то блокировкой или индексированием причуды. Я провел некоторое исследование по этому вопросу несколько лет назад, когда это случилось с одним из моих столов.

ключ нарушении ошибка относится к не отсутствует ключ в другой таблице, это дублировать ключ в одной таблице. Иногда Access получает скрещенные провода и думает, что ключ, который он назначает новой записи, уже назначен другой записи в таблице. Я не знаю, почему это происходит. Но, помещая поле timestamp в таблицу, это заставляет Access думать по-другому.

Это разочаровывающее исправление, потому что я не знаю, почему оно работает. И теперь у меня есть бесполезное поле метки времени в моей таблице. Но пусть будет так.


MS-Access, как известно, блевотина до ложных ошибок, которые не имеют ничего общего с проблемой они сообщают. Не помешало бы окружить столбец под названием "type" скобками, [type].

http://office.microsoft.com/en-us/access-help/access-2007-reserved-words-and-symbols-HA010030643.aspx#_Toc272229038


значение теперь изменение между попытками, так что теперь больше нет повторяющейся ключевой ошибки?


вставить в myTable (inst_id, user_id, app_id, type, accessed_on) Значения (3264,2580, 'MyApp','Renew', Now);


Вы можете просто проверить это с accessed_on тип данных и теперь тип



измените тип значения DateTime на String при вставке, что будет хорошо.
дайте мне знать, если это работает для вас.

спасибо
удовлетворить даже самых взыскательных


Я считаю, что Jet / ACE не поймет метод NOW ().

и я работал с версией ACE, синтаксис не мог работать. Нужно найти другой способ для прямой реализации синтаксиса.


Я знаю давно, у меня были проблемы similuar. В моих случаях я получал ту же ошибку, но у меня не было уникальных индексов в таблице. Я, наконец, решил его восстановление и сжатие базы данных.