如果我的表只有一个自动增量列,该如何插入其中?

Asked
Viewd3667

11

一个同事问我,如果您在SQL Server中有一个仅具有自动增量列的表,您如何在该表中插入新行?

 INSERT INTO MyTable() VALUES()
 

...不起作用。

至于为什么...我不确定。但是我发现这个问题令人信服。

5 个答案

21
 insert into mytable default values
 
0

使用IDENTITY_INSERT设置:

SET IDENTITY_INSERT MyTable打开 插入MyTable(AutoIncrementColumnName,OtherColumnNames ...) 值(9999,OtherData ...) SET IDENTITY_INSERT MyTable OFF

请确保您已插入键中尚未存在的值。

0
 set identity_insert MyTable ON

insert MyTable(MyIdentColumn) values(42)

set identity_insert MyTable OFF
 
  • 计算max + 1可能无法达到将一个明确的值插入一个标识列的目的。以此处的42为例-您可以插入要插入的任何值。如果您只想获得最大价值,那么您根本就不会使用我的示例。

    Scott IveyJune 30, 2009 20:07
  • 有趣的方法。如果将42替换为可计算下一个自动增量值的内容(例如MAX(id)+ 1),则可能会更好。

    Scott WhitlockJune 30, 2009 20:03
2

使用默认值,也可以使用默认值

 create table #test (id int identity, Somedate datetime default getdate())


insert #test default values

select * from #test
 

id Somedate

1 2009-06-30 16:04:03.307

2

显然这可行:

 INSERT INTO MyTable DEFAULT VALUES
 

(我点击问问题后才发现它。抱歉!)