SQL批量插入期间约束的控制行为?

时间:2016-06-24 13:14:27

标签: sql-server database

我很好奇是否有办法控制数据库在使用bulk insert命令时如何响应外键和主键约束。具体来说,我将数据插入到employee表(主键为empID)中,该表通过该键(empID)链接到其他表(子项,配偶等)中的数据。鉴于此应用程序背后的逻辑和目的,如果在批量插入期间找到重复的主键,我想执行以下操作:

  1. 删除(或更新)数据库中已存在的“员工”行。
  2. 删除与该员工关联的其他表格中的所有数据(即儿童,受益人等)。
  3. 插入新员工数据。
  4. 如果我以通常的方式插入数据,那就是没有批量插入,我认为任务很简单。但是,正如我使用它,我必须承认,我不太确定如何处理这个问题。

    我当然不希望任何人为我编写代码,但我不确定它是否可行,如何开始,或者最佳方法可能是什么。或许存储过程,或者更改为模式?

    非常感谢任何指导。

1 个答案:

答案 0 :(得分:1)

此类问题的常见解决方案是将数据加载到 Staging 表中,可能在其自己的架构甚至数据库中。然后,您将从此临时表中加载实际表,从而允许您以不受限制的方式执行所需的任何逻辑。这样做的另一个好处是可以在加载“真实”表时记录/审核/检查您正在使用的逻辑。