2012-11-14 18 views
0

我买了下一列的表:Id, Name, Age, Class如何从mdb的表中检索最后的主要Id?

我试图在DB插入新行是这样的:

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

,并得到一个exeption:

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

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

+2

我想你忘了设置'id'字段'IDENTITY'。请你可以包含*完整*表定义? – MatBailie

+0

@Dems,你的意思是将“Id”列的类型从Number更改为AutoNumber? –

+0

没错,是:) – MatBailie

回答

3

可以ID字段的数据类型更改为自动编号,而不是整数。

+0

到目前为止,这似乎是唯一相关的答案。 – Fionnuala

+1

正确设置数据类型后,@@ identity将对连接起作用。 – Fionnuala

0

不知道有关访问,但MySQL的语法为:

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

这不适用于MS Access。 – Fionnuala

0

试试这个

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

使用max得到最后的ID是一个*真的*坏主意,除了单一用户系统。 – Fionnuala

0

请在“ID”列在mytable的汽车数量,然后尝试

否则

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

正如我上面所说,max是一个**真的**不好主意。 – Fionnuala

+0

然后将ID列作为自动编号 –

相关问题