【发布时间】:2015-09-10 19:44:16
【问题描述】:
我们通常可以通过映射和检查条件使用合并查询/连接查询来避免重复插入目标表。但是如何在没有外键约束的情况下进行处理以避免重复插入。
TableA - 目标表
+--------+--------+-----------+-----------+------------+
| Id | RecNo | Name | Salary | Date |
+--------+--------+-----------+-----------+------------+
|anyGuid |Guid1 | Name1 | 10000 | 19-07-2015 |
|anyGuid |Guid2 | Name2 | 20000 | 20-07-2015 |
|anyGuid |Guid3 | Name3 | 30000 | 19-07-2015 |
+--------+--------+-----------+-----------+------------+
TableB - 源临时表
+--------+--------+-----------+------------+
| RecNo | Name | Salary | Date |
+--------+--------+-----------+------------+
|Guid3 |Name3 | 30000 | 19-07-2015 |
|Guid4 |Name4 | 40000 | 20-07-2015 |
|Guid5 |Name5 | 40000 | 21-07-2105 |
+--------+--------+-----------+------------+
现在,我需要将TableB 中的所有行插入到TableA 目标表中,但不应插入TableA 中已存在的行。
示例:不应将源表 B 的第一条记录插入表 A。
注意:TableA和TableB之间没有外键。
我们怎样才能巧妙地处理这种情况?请提出建议。
【问题讨论】:
-
为什么不加外键呢?听起来您无论如何都想强制执行它,那么为什么不将它添加到您的系统中呢?这就是它们存在的原因。
标签: sql sql-server