gpt4 book ai didi

database - 微软 Access 2007 : Add AUTOINCREMENT field from MAKE TABLE query

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:31 25 4
gpt4 key购买 nike

我正在使用 MAKE TABLE 查询类型从现有表 T1 创建表 T2,并且需要添加一个自动递增字段作为新表 T2 的主键。

我很好奇所需的 SQL。例如:

SELECT AUTOINCREMENT(1, 1) AS ID, T1.*, INTO T2 FROM T1

AUTOINCREMENT(1, 1) AS ID 注释当然不起作用,但我怀疑它可能起作用,并且仅用于说明目的,以说明我正在尝试做什么。

请注意,在使用 ALTER TABLE 语句创建表后,我无法更改表,当从 T1 创建 T2 时,我需要即时构建 AUTOINCREMENT 字段(并填充它)。

最佳答案

在评论中,您说“查询在数据库打开时运行,因为表单打开以供用户输入。我想我可以构建一个宏来运行 MAKE TABLE 查询,然后在需要时运行另一个 ALTER TABLE 查询”。

与其每次都重新创建 T2,不如创建 T2 一次,然后每次都清空其内容,然后再从 T1 追加,这样会更简单。丢弃 T2 中的行:

Dim strSql as String
strSql = "DELETE FROM T2;"
CurrentProject.Connection.Execute strSql

如果要将 ID 列的自动编号重置为 1,可以使用 ALTER TABLE 语句。

strSql = "ALTER TABLE T2 ALTER COLUMN ID COUNTER(1, 1);"
CurrentProject.Connection.Execute strSql

然后将T1的内容添加到T2。

strSql = "INSERT INTO T2 (field1, field2)" & vbCrLf & _
"SELECT field1, field2 FROM T1;"
CurrentProject.Connection.Execute strSql

只需将 ID 列留在字段列表之外,让自动编号处理它。如果您愿意,可以在该语句的 SELECT 部分使用 ORDER BY 控制添加 T1 行的顺序。

我使用 ADO (CurrentProject.Connection) 来执行所有这三个语句。但是,如果您愿意,第一条和第三条语句应该可以在 DAO 下正常运行。但是该 ALTER TABLE 语句必须从 ADO 运行。

关于database - 微软 Access 2007 : Add AUTOINCREMENT field from MAKE TABLE query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com