identity_insert и скрипт инициализации таблицы - PullRequest
0 голосов
/ 09 июня 2009

Я пытаюсь создать таблицу со строкой, в которой 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]

Мне нужна строка с идентификатором = 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 ]

4 голосов
/ 09 июня 2009

Бен,

Насколько я понимаю, вы хотите, чтобы столбец идентификаторов начинался с 0 вместо 1?

Если это то, что вы хотите, вы должны изменить начальную начальную IDENTITY (семя, шаг)

изменить таблицу создания на:

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

0 голосов
/ 09 июня 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...