我需要为三个数据库表实现一个导入导出模块,这些表与内部主键/外键约束相关。
我可以轻松地使用c#/ linq到xml / linq到sql。问题是,当我导入导出的数据时,在数据库中,主键表的id正在重新生成而不从xml文件中获取/分配id(它自然地用于自动增量)。为此,无法导入其他表数据/显示主键约束违反的错误。
我的目标是导入所有数据并保持主/外键不变。
现在,有人可以建议我能解决这个问题吗?提前谢谢。
答案 0 :(得分:2)
您可以使用identity insert为标识列指定值。
如果为标识列指定显式值,则您自己负责解决冲突。如果数据库已经有id = 1
行,则必须决定如果导入还包含id = 1
该怎么做:SQL Server只会抛出错误。
答案 1 :(得分:1)
我们总是将BCP操作用于此类任务。
答案 2 :(得分:0)
我建议不要让你的自动增量作为主键,但要有一个单独的主键,可以用别的方式定义......那么你就不会有自动增量的问题
答案 3 :(得分:0)
如果您不需要XML和SQL中的ID匹配(仅关系),您可以使用SCOPE_IDENTITY()
并维护从XML ID到SQL ID的映射,以在其他表中插入正确的外键列。