在SQL Server中,如何向只有一个自增列的表中插入数据?

3
在SQL Server中,如果我要向一个只有一个自增列的表中插入数据,该如何操作? 比如我要向下面这个表t中插入数据。 请问我应该怎样编写插入语句?
CREATE TABLE t
(
    id INT IDENTITY(1, 1) PRIMARY KEY
)

非常感谢。

该列是否也是自增的? - Wai Wong
@Wai Wong - 这就是 SQL Server 中的 IDENTITY... - David M
您能介绍一下背景吗 - 您想要实现什么目标?IDENTITY列相当受限制 - 使用具有唯一约束条件的常规int可能已足够,而不需要所有限制。 - mdma
3个回答

3

插入单个值

INSERT T DEFAULT VALUES 

或者在SQL Server 2008+上插入多行:

MERGE INTO t
USING (SELECT TOP 100 *
       FROM master..spt_values) T
ON 1 = 0
WHEN NOT MATCHED THEN
  INSERT
  DEFAULT VALUES; 

在之前的版本中,要在单个语句中插入多行需要显式输入值,例如如下所示。
SET IDENTITY_INSERT t ON

INSERT INTO t
            (id)
SELECT TOP 100  
               (SELECT ISNULL(MAX(id), 0) FROM   t (TABLOCKX)) + 
                            ROW_NUMBER() OVER (ORDER BY @@SPID)
FROM   master.dbo.spt_values

SET IDENTITY_INSERT t OFF 

2

如果您想继续插入身份值,则使用

INSERT YourTable DEFAULT VALUES;

如果您想插入明确的数值,则可以编写
SET IDENTITY_INSERT YourTable ON
INSERT INTO YourTable (id) VALUES (5);
SET IDENTITY_INSERT YourTable OFF

-1

请尝试:-

INSERT INTO t Values(NULL)

当使用列列表并且启用了IDENTITY_INSERT时,才能为表“t”中的标识列指定显式值。 - Martin Smith

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