如何仅将一个IDENTITY列插入到表中?


84

(在尝试回答另一个问题的过程中要弄清楚这个问题)

考虑下面的MS-SQL表,称​​为GroupTable:

组号
-------
1个  
2  
3  

其中,GroupID是主键,是Identity列。

如何在使用IDENTITY_INSERT ON的情况下将新行插入表中(从而生成新ID)?

注意:

INSERT INTO GroupTable() Values ()   

……行不通。

编辑:我们在这里谈论SQL 2005或SQL 2008。

Answers:


126

这应该工作:

INSERT INTO GroupTable DEFAULT VALUES 

我无法将其与Visual Studio 2008 / SQL Express 2005一起使用。有什么想法吗?相同的表布局,一列,主键,identity(1,1)。
Thomas Sandberg

我正在使用SQL 2008 R2,我也没有任何乐趣!
TDaver 2011年

在SQL Server 2008 Express上对我有效。
阿德里安·林奇

3
@RomanPekar,在SqlServer 2008及更高版本中,可以使用merge运算符。EGmerge into TableName using (values (1), (2), (3)) s(n) on 1=0 when not matched then insert default values;
我-一个


3

一次可以插入多行。

例如,要插入30行。插入组表默认值GO 30

每次增加标识列将插入30行。


不确定SQL 2008,但在2008R2中不起作用(我收到通用错误“'GO'附近的语法无效”)
Elaskanator

0

您可以尝试使用Sequence或类似的东西吗?从序列中选择的位置,它将为您提供序列中的下一个值。


我认为他是在谈论Oracle DB
Codeulike

我知道Oracle中存在序列,并且不确定SQL Server中存在哪些(如果有)可比的事物。这就是为什么我给它加上“或类似的东西”,然后定义一个序列以供参考。
2009年

3
SQL Server 2012具有SEQUENCE
Nick Chammas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.