首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sql server 2008 R2中插入新记录并跳过外键冲突

在sql server 2008 R2中插入新记录并跳过外键冲突
EN

Stack Overflow用户
提问于 2018-08-24 07:42:06
回答 1查看 890关注 0票数 1

然而,在server 2008中,我遇到了类似于这个SQL Server foreign key conflict in a multi values statement?的问题。

当我从csv文件读取数据时,父文件中已经存在一些id,因此返回此错误:

语句与外键约束冲突

我想知道是否有类似于MySQL insert ignore的方法。这样我就可以简单地跳过有问题的数据。

我承认,如果除了使用新的临时表创建存储过程(首先插入到没有外键的表,然后用where foreign_id exists in (select id from parent)重新插入)之外,没有其他方法。

因为我在文档中真的找不到任何东西,所以要求确保我没有错过任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 07:45:17

想到的一个一般解决方案是暂时关闭外键约束,然后执行插入操作。然后,您可以运行一个清理脚本/查询来删除或纠正指向不存在的父母的子记录。一旦您的数据处于良好状态,然后再次打开外键约束。

阅读How can foreign key constraints be temporarily disabled using T-SQL?,了解如何为单个表禁用/启用外键约束:

代码语言:javascript
复制
ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint            -- disable
ALTER TABLE MyTable WITH CHECK CHECK CONSTRAINT MyConstraint   -- enable
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51999698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档