Sql DBCC CHECKIDENT(';table';,重新设定种子,0)导致INSERT语句与外键约束错误冲突

Sql DBCC CHECKIDENT(';table';,重新设定种子,0)导致INSERT语句与外键约束错误冲突,sql,sql-server,Sql,Sql Server,我有一个单亲表,它的id列定义了标识 CREATE TABLE [model].[Parent]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL) 现在我有了另一个子表,它引用父Id列 CREATE TABLE [model].[Child]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL, [ParentId] [in

我有一个单亲表,它的id列定义了标识

CREATE TABLE [model].[Parent](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL)
现在我有了另一个子表,它引用父Id列

CREATE TABLE [model].[Child](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[ParentId] [int] NULL)
GO
ALTER TABLE [model].[Child]  WITH CHECK ADD  CONSTRAINT [FK_ParentIdentity] FOREIGN KEY([ParentId])
REFERENCES [model].[Parent] ([Id])
GO
这两个表都将id作为主键。现在的问题是,当我进行迁移时,我设置了

DBCC CHECKIDENT ('[Model].[Parent]', RESEED, 0)
DBCC CHECKIDENT ('[Model].[Child]', RESEED, 0)
我使用动态查询生成insert语句

现在,当我插入第一行时,我在Parent.id的子表中插入空值,并得到以下错误:

INSERT语句与外键约束“FK_ParentIdentity”冲突。冲突发生在数据库“DBName”、表“model.Parent”、列“Id”中。 正在检查标识信息:当前标识值“NULL”


有谁能帮我解决这个问题,我看到了很多解决方案,但都没有帮到我。我没有删除表并重新创建它的选项。

当您尝试插入第一个子行时,表是否为空?您可以在DBCC CHECKINDENT之后添加您的操作示例吗?无法使用
插入子值('test',null)
复制,但我必须用
主键标识(1,1)
替换这两个表的
标识(1,1)
。Nicolas R@Yes,在DBCC之后,我将数据插入到chiled表中。在我插入child.Stijn@之前,Parent拥有数据。我们这样做:CONSTRAINT[FK_ParentIdentity]主键集群([Id]ASC)。在插入数据之前尝试使用DBCC。仅供参考。我添加的是作为我问题的示例,我的表较大,无法在此处发布。您是否尝试在DBCC语句和INSERT语句之间放置GO或commit语句?