Access中有TRUNCATE吗?

时间:2011-08-29 13:15:32

标签: ms-access

我在Access数据库中有一个带有自动编号字段的表。

当我从表中删除所有记录时,自动编号会记住最后一个数字。

Access是否与SQL Server的TRUNCATE TABLE MyTbl类似?

如果没有,我删除表的记录后如何从1开始?

9 个答案:

答案 0 :(得分:17)

Access SQL没有TRUNCATE TABLE

之类的内容

您可以使用ADO连接执行DDL语句,该语句重置自动编号字段的“种子”值。所以你可以用VBA代码做到这一点,而不必使用紧凑型& amp;修复以重置自动编号。

此示例代码首先删除 tblFoo 表中的所有行,然后重置 id 自动编号字段的种子值。

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

答案 1 :(得分:4)

据我所知,MS Access中没有截断,但您可以解决自动编号问题,记住删除后的最后一个数字。删除带有自动编号字段的记录后,MS Access中有一种方法以1开头。如果您使用的是,则可以通过选择位于Office按钮下方的“管理”来找到压缩和修复数据库功能。您还可以通过激活紧密关闭选项,使数据库紧凑并在每次关闭时进行自我修复。如果您想设置此选项,可以在当前数据库的访问选项中找到它。

enter image description here

答案 2 :(得分:4)

或者没有紧凑和修理:

清空你的桌子:

DELETE FROM MyTable

将autoincrementfield(如'ID')更改为Integer:

ALTER TABLE MyTable ALTER Column ID INT;

将字段更改回AUTOINCREMENT:

ALTER TABLE MyTable ALTER Column ID AUTOINCREMENT;

答案 3 :(得分:3)

需要1秒才能找到解决方案:

http://www.webmasterworld.com/databases_sql_mysql/3227574.htm

  

压缩和修复过程将重置所有空表   自动递增计数器为零。所以,删除所有记录:

     

工具 - >数据库实用程序 - >紧凑和修复数据库

答案 4 :(得分:2)

还有另一种方法不需要改变表格或压缩和修复。如果您有分布式数据库,它将更适合您。从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

答案 5 :(得分:1)

删除所有记录,然后压缩数据库。

答案 6 :(得分:0)

使用VBA时没有Compact和Repair: 说你的桌子是'MyTable'。在没有数据的情况下制作该表的副本并将其保存为例如“MyTable_Template”。 当你想要截断表时,只需'DROP'表'将'MyTable_Template'复制到'MyTable'。现在,“新”表'MyTable'的自动增量字段将再次从1开始。

答案 7 :(得分:0)

在MS_Access数据库中,“不支持截断”。所以我们可以先通过“删除”查询删除所有记录。

删除记录后,我们可以通过使用“Alter”查询来改变“ID”列从1开始。

查询:

  "Delete * from (Your Table Name); 
  Alter Table (Your Table Name) Alter Column (Your Column Id) Counter(1,1);"

在单次执行中使用这两个查询,我们可以删除所有记录,并从1开始重置列ID。

答案 8 :(得分:0)

之前我也遇到过同样的问题,我做的是在修改模式下回到表中。然后我用autonumber删除了字段名称,然后再次使用相同的名称插入。在视图模式下运行时自动编号的结果返回到第一个条目的数字1。