在试图回答这个问题的过程中,我想出了这个问题。
考虑以下名为GroupTable的MS-SQL表:
GroupID ------- 1 2 3
其中GroupID是主键并且是Identity列。
如何向表中插入新行(从而生成新的ID),而不使用IDENTITY_INSERT ON?
请注意,这样做是不可取的:
INSERT INTO GroupTable() Values ()
...不起作用。
编辑:我们在讨论 SQL 2005 或 SQL 2008。
在试图回答这个问题的过程中,我想出了这个问题。
考虑以下名为GroupTable的MS-SQL表:
GroupID ------- 1 2 3
其中GroupID是主键并且是Identity列。
如何向表中插入新行(从而生成新的ID),而不使用IDENTITY_INSERT ON?
请注意,这样做是不可取的:
INSERT INTO GroupTable() Values ()
...不起作用。
编辑:我们在讨论 SQL 2005 或 SQL 2008。
这应该可以正常工作:
INSERT INTO GroupTable DEFAULT VALUES
这是你需要的:
INSERT INTO GroupTable DEFAULT VALUES
可以一次性插入多行数据。
例如,要插入30行数据: INSERT INTO GroupTable DEFAULT VALUES GO 30
这将通过每次递增标识列来插入30行数据。
GO
必须单独成行。看起来 RMK 只是格式化他的示例不当,忘记将其放在新行上。GO
不是 T-SQL 关键字,而是 SSMS 识别如何处理前面的 T-SQL 的特殊命令。 - J.D.你可以尝试使用序列或类似的东西吗?从序列中选择,它会给你序列中的下一个值。
这个实际上会起作用--
向默认表插入值
merge
运算符实现此功能。例如:merge into TableName using (values (1), (2), (3)) s(n) on 1=0 when not matched then insert default values;
- i-one