identity_insert和表初始化脚本

时间:2009-06-09 01:50:55

标签: sql sql-server database tsql

我正在尝试创建一个包含id = 0的行的表,但是标识插入列从1,1开始,所以以下所有使用标识插入

我必须执行

DBCC CHECKIDENT ('Foo', RESEED, 0);

在我手动插入(使用脚本)以使下一行具有id = 1之后 是否有另一种方法来获取我的第一行的id = 0,这是来自插入脚本,所有其他的跟随从1开始,所以我不必调用dbcc checkident

创建下表

CREATE TABLE [dbo].[Foo](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [CreatedAt] [datetime] NOT NULL CONSTRAINT DF_Foo_CreatedAt DEFAULT getdate(),
    [ModifiedAt] [timestamp] NOT NULL,
    [Code] [nvarchar](50) NOT NULL,
    [Name] [nvarchar](50) NULL,
 CONSTRAINT [PK_Foo] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
) ON [PRIMARY]
) ON [PRIMARY]

我想要一个id = 0的行,所以我运行下面的

SET IDENTITY_INSERT [dbo].[Foo] ON;
INSERT INTO [dbo].[Foo] ([Id],[Code],[Name]) VALUES (0, 'Default', 'Regular');
SET IDENTITY_INSERT [dbo].[Foo] OFF;

然后我必须执行

DBCC CHECKIDENT('Foo',RESEED,0);

让所有后续插入从1开始

2 个答案:

答案 0 :(得分:4)

本,

根据我的理解,您希望标识列以0而不是1开始?

如果这是您想要的,您必须更改初始种子IDENTITY(种子,增量)

将创建表更改为:

[Id] [int] IDENTITY(0,1)NOT NULL,

答案 1 :(得分:0)