如何从 mdb 的表中检索最后一个主 ID?

Posted

技术标签:

【中文标题】如何从 mdb 的表中检索最后一个主 ID?【英文标题】:How to retrieve last primary Id from mdb's table? 【发布时间】:2012-11-14 10:43:56 【问题描述】:

我得到了带有下一列的表格:Id, Name, Age, Class

我正在尝试像这样在 db 中插入新行:

INSERT INTO MyTable (Name, Age, Class)
VALUES (@name, @age, @class)

得到一个例外:

"Index or primary key cannot contain a Null value."

问题是如何在不知道下一个主 ID 的情况下添加新行,或者是否有办法在另一个查询的帮助下从表中获取此 ID?

【问题讨论】:

我认为您忘记将id 字段设置为IDENTITY。请您包含完整的表定义吗? @Dems,您的意思是将Id 列的类型从 Number 更改为 AutoNumber 吗? 【参考方案1】:

您可以将 ID 列的数据类型更改为 AutoNumber 而不是 Integer。

【讨论】:

到目前为止,这似乎是唯一相关的答案。 正确设置数据类型后,@@identity 将对连接起作用。【参考方案2】:

不确定 Access,但 mysql 语法是:

INSERT INTO MyTable (Id, Name, Age, Class) VALUES (NULL, @name, @age, @class);

【讨论】:

这不适合 MS Access。【参考方案3】:

试试这个

INSERT INTO MyTable (id,Name, Age, Class)
 VALUES ((select max(id)+1 from MyTable),@name, @age, @class)

【讨论】:

使用 max 来获取最后一个 ID 是一个真正的坏主意,除了单用户系统。【参考方案4】:

请在 Mytable 中将“id”列设为自动编号,然后尝试

否则

INSERT INTO MyTable (id,Name, Age, Class)
select max(id)+1,@name, @age, @class FROM MyTable 

【讨论】:

正如我上面所说,max 真的是个坏主意。 然后将ID列设为自动编号

以上是关于如何从 mdb 的表中检索最后一个主 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQLite 表中检索最后一个自动增量 ID?

如何从 DataTable 中的最后一行检索值?

如何使用单个查询联合从另一个表中检索到的表列表?

从3个表中检索数据如何使用Laravel中的第一个表从最后一个表中检索数据

根据最后一个自动增量主键检索记录并在输入字段中查看

如何在没有'id'列的MySql中获取最后插入的记录?