如果我有一个只有自增列的表,如何向其中插入数据?

14

一位同事问我,如果在SQL Server中有一张只有自增列的表,如何向该表插入新行?

INSERT INTO MyTable() VALUES()

......不起作用。

至于为什么......我并不是很确定。但我觉得这个问题有点吸引人。


请看问题如何在没有值的情况下向表中插入数据?的语法。 - user905686
5个回答

26
insert into mytable default values

2

显然这个有效:

INSERT INTO MyTable DEFAULT VALUES

(在我点击“提问”按钮后才发现它。抱歉!)

2

使用默认值,也适用于默认设置。

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


insert #test default values

select * from #test

编号 日期

1 2009年6月30日 16:04:03.307


0
set identity_insert MyTable ON

insert MyTable(MyIdentColumn) values(42)

set identity_insert MyTable OFF

有趣的方法。如果您将42替换为计算下一个自动递增值的东西,例如MAX(id)+1,它可能会更有效。 - Scott Whitlock
计算最大值加1会失去将明确的值插入标识列的目的。 42只是一个例子 - 您可以插入任何您想要插入的值。 如果您只想要最大值,您根本不会使用我的示例。 - Scott Ivey

0

使用IDENTITY_INSERT设置:

SET IDENTITY_INSERT MyTable ON INSERT INTO MyTable (AutoIncrementColumnName, OtherColumnNames...) VALUES (9999, OtherData...) SET IDENTITY_INSERT MyTable OFF

确保插入的值不在键中已经存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接