sql – 更改表添加具有默认值和FK的列,该值在FK参考数据中不存在
发布时间:2020-12-12 08:50:40 所属栏目:MsSql教程 来源:网络整理
导读:这是我的表: 会员ID,…. 产品:Id,…. 我的会员表有一些值,如果他们的Id = 0我不想添加Id = 0的任何成员,所以我尝试运行这个脚本: ALTER TABLE [Product]ADD [Member_Id] BIGINT NOT NULL DEFAULT(0),CONSTRAINT [FK_Product_Member] FOREIGN KEY ([Member_
这是我的表:
会员ID,…. 产品:Id,…. 我的会员表有一些值,如果他们的Id = 0我不想添加Id = 0的任何成员,所以我尝试运行这个脚本: ALTER TABLE [Product] ADD [Member_Id] BIGINT NOT NULL DEFAULT(0),CONSTRAINT [FK_Product_Member] FOREIGN KEY ([Member_Id]) REFERENCES [Member]; 所以有一个错误: The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_Product_Member". 所以我试试这个: SET IDENTITY_INSERT [Member] ON INSERT INTO [Member] ([Id]) VALUES (0); SET IDENTITY_INSERT [Member] OFF ALTER TABLE [Product] ADD [Member_Id] BIGINT NOT NULL DEFAULT(0),CONSTRAINT [FK_Product_Member] FOREIGN KEY ([Member_Id]) REFERENCES [Member]; DELETE FROM [Member] WHERE [Member].[Id] = 0; 那么新的错误是: The DELETE statement conflicted with the REFERENCE constraint "FK_Product_Member". 如果我再次尝试创建所有表,那么当然丢失我的数据时,每件事都可以,所以需要备份,创建表和恢复数据.那么这种情况有没有办法改变Table?你的建议是什么? 解决方法您可以在引用表中使用的唯一“值”,即不强制执行外键约束,为NULL.不是0,或任何其他魔法值.所以显而易见的解决方案是允许NULL: ALTER TABLE [Product] ADD [Member_Id] BIGINT NULL,CONSTRAINT [FK_Product_Member] FOREIGN KEY ([Member_Id]) REFERENCES [Member]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |