如何从 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?的主要内容,如果未能解决你的问题,请参考以下文章