Sql server 如果我有一个只有一个自动递增列的表,我如何插入它?
一位同事问我,如果SQL Server中有一个表只有一个自动递增列,如何在该表中插入新行Sql server 如果我有一个只有一个自动递增列的表,我如何插入它?,sql-server,insert,auto-increment,Sql Server,Insert,Auto Increment,一位同事问我,如果SQL Server中有一个表只有一个自动递增列,如何在该表中插入新行 INSERT INTO MyTable() VALUES() …不起作用 至于为什么。。。我不太确定。但我发现这个问题很有说服力。显然这是可行的: INSERT INTO MyTable DEFAULT VALUES (在我点击“询问问题”后才发现它。抱歉!)使用标识\u插入设置: 设置标识\u在上插入MyTable 插入MyTable(自动递增ColumnName、其他ColumnName…) 值(9
INSERT INTO MyTable() VALUES()
…不起作用
至于为什么。。。我不太确定。但我发现这个问题很有说服力。显然这是可行的:
INSERT INTO MyTable DEFAULT VALUES
(在我点击“询问问题”后才发现它。抱歉!)使用标识\u插入设置: 设置标识\u在上插入MyTable 插入MyTable(自动递增ColumnName、其他ColumnName…) 值(9999,其他数据…) 将IDENTITY\u INSERT MyTable设置为OFF
确保插入的值不在键中。使用默认值,也可以使用默认值
insert into mytable default values
create table #test (id int identity, Somedate datetime default getdate())
insert #test default values
select * from #test
某天
1 2009-06-30 16:04:03.307有趣的方法。如果将42替换为计算下一个自动增量值的值(如MAX(id)+1),效果可能会更好。计算MAX+1将无法在标识列中插入显式值。42只是一个例子,你可以插入任何你想插入的值。如果你只是想要最大值,你根本不会使用我的例子。参见问题
create table #test (id int identity, Somedate datetime default getdate())
insert #test default values
select * from #test