【问题标题】:How to retrieve last primary Id from mdb's table?如何从 mdb 的表中检索最后一个主 ID?
【发布时间】: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 吗?

标签: c# .net sql ms-access


【解决方案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列设为自动编号
猜你喜欢
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2019-10-24
  • 1970-01-01
相关资源
最近更新 更多