然而,在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)重新插入)之外,没有其他方法。
因为我在文档中真的找不到任何东西,所以要求确保我没有错过任何东西。
发布于 2018-08-24 07:45:17
想到的一个一般解决方案是暂时关闭外键约束,然后执行插入操作。然后,您可以运行一个清理脚本/查询来删除或纠正指向不存在的父母的子记录。一旦您的数据处于良好状态,然后再次打开外键约束。
阅读How can foreign key constraints be temporarily disabled using T-SQL?,了解如何为单个表禁用/启用外键约束:
ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint -- disable
ALTER TABLE MyTable WITH CHECK CHECK CONSTRAINT MyConstraint -- enablehttps://stackoverflow.com/questions/51999698
复制相似问题