Есть TRUNCATE в Access?
У меня есть таблица в базе данных Access с полем autonumber.
Когда я удаляю все записи из таблицы, автономер запоминает последний номер.
Имеет ли Access нечто похожее на SQL Server TRUNCATE TABLE MyTbl
?
Если нет, как начать с 1 после удаления записей таблицы?
Ответы
Ответ 1
Доступ SQL не имеет ничего подобного TRUNCATE TABLE
.
Вы можете использовать ADO-соединение для выполнения оператора DDL, который сбрасывает значение "семя" поля autonumber. Таким образом, вы можете сделать это с помощью кода VBA и не использовать компактный и восстанавливать до reset автономера.
Этот примерный код сначала удаляет все строки из моей таблицы tblFoo, а затем сбрасывает начальное значение для поля id autonumber.
Dim strSql As String
strSql = "DELETE FROM tblFoo;"
CurrentProject.Connection.Execute strSql
strSql = "ALTER TABLE tblFoo ALTER COLUMN id COUNTER (1, 1);"
CurrentProject.Connection.Execute strSql
Ответ 2
потребовалось 1 секунду, чтобы найти решение по адресу:
http://www.webmasterworld.com/databases_sql_mysql/3227574.htm
Процесс Compact и Repair будет reset пустым столом счетчики автоинкремента до нуля. Итак, удалите все записи:
Инструменты → Утилиты баз данных → Компактная и восстановительная база данных
Ответ 3
Там нет усечения в MS Access, насколько я знаю, но вы можете решить проблему с автоматическим номером, помня о последнем номере после удаления. Там в MS Access можно начать с 1 после удаления записей с полем автоматического номера. Если вы используете ms-access-2007, вы можете найти Компактная и восстанавливающая база данных, выбрав "Управление", расположенную под кнопкой "Офис". Вы также можете скомпилировать свою базу данных и восстановить ее каждый раз, когда она будет закрыта, активировав опцию Compact on Close. Если вы хотите установить этот параметр, вы можете найти его в Параметры доступа для текущей базы данных.
![enter image description here]()
Ответ 4
Или без компактности и ремонта:
Очистите таблицу:
DELETE FROM MyTable
Изменить значение autoincrementfield (например, 'ID') для Integer:
ALTER TABLE MyTable ALTER Column ID INT;
Верните поле обратно в AUTOINCREMENT:
ALTER TABLE MyTable ALTER Column ID AUTOINCREMENT;
Ответ 5
Существует другой способ, который не требует изменения таблицы или уплотнения и ремонта. Он будет работать лучше для вас, если у вас есть распределенная база данных. Начиная с 2000 года Access примет значение вставки в поле автонабора и начнет увеличивать его. Сделайте это в запросе или в коде, подобном этому.
CurrentProject.Connection.Execute "DELETE FROM Mytbl"
CurrentProject.Connection.Execute "INSERT INTO Mytbl(ID) VALUES(0)"
CurrentProject.Connection.Execute "DELETE FROM Mytbl"
Примечание. Поместите adExecuteNoRecords после выполнения команды для повышения производительности. например CurrentProject.Connection.Execute sql, adExecuteNoRecords
Ответ 6
Удалите все записи, а затем скомпилируйте базу данных.
Ответ 7
Или без Compact и Repair при использовании VBA:
Скажите, что ваш стол "MyTable" . Сделайте копию этой таблицы БЕЗ данных и сохраните ее, например, как "MyTable_Template".
Если вы хотите обрезать таблицу, просто "DROP" в таблице en скопируйте "MyTable_Template" в "MyTable" . Теперь автоинкрементное поле вашей "новой" таблицы "MyTable" начнется с 1 снова.
Ответ 8
В базе данных MS_Access "Truncate не поддерживается". Поэтому мы можем сначала удалить все записи с помощью запроса "Удалить".
После удаления записей мы можем изменить столбец "Идентификатор", начиная с 1, используя запрос "Alter".
Query:
"Delete * from (Your Table Name);
Alter Table (Your Table Name) Alter Column (Your Column Id) Counter(1,1);"
Используя эти два запроса в одном исполнении, мы можем удалить все записи и reset идентификатор столбца начинается с 1.
Ответ 9
Я тоже такая же проблема, что и я, я возвращаюсь к таблице в режиме модификации. Затем я удалил имя поля с помощью autonumber и снова вставил его с тем же именем. Результат автонабора при запуске в режиме просмотра возвращался к номеру первой записи.