34,590
社区成员
发帖
与我相关
我的任务
分享
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(id INT IDENTITY(1,1) PRIMARY KEY,n NVARCHAR(10))
GO
SET NOCOUNT ON
INSERT INTO t (n) VALUES('a')
INSERT INTO t (n) VALUES('b')
DELETE FROM t WHERE n='b'
--必须设置 SET IDENTITY_INSERT tableName ON
--才能插入显式的 id 值
--不过你到最后会发现, 一般情况下没这个必要
--如果真的希望一直连续,可以用其它列去做逻辑上的处理,标识列不是专门干这个的
SET IDENTITY_INSERT t ON
INSERT INTO t(id,n) VALUES(2,'c')
SET IDENTITY_INSERT t OFF
SELECT * FROM t
/*
id n
1 a
2 c
*/
SELECT * ,
ROW_NUMBER() OVER ( ORDER BY id) AS 行号
FROM 表名