我有以下表格:
DataValue
DateStamp ItemId Value
---------- ------ -----
2012-05-22 1 6541
2012-05-22 2 12321
2012-05-21 3 32
tmp_holding_DataValue
DateStamp ItemId Value
---------- ------ -----
2012-05-22 1 6541
2012-05-22 4 87
2012-05-21 5 234
DateStamp
并且ItemId
是主键列。
我正在做一个全天定期运行的插入(在存储过程中):
insert into DataValue(DateStamp, ItemId, Value)
select DateStamp, ItemId, Value from tmp_holding_DataValue;
这会将数据从保留表 ( tmp_holding_DataValue
) 移动到主数据表 ( DataValue
) 中。然后将保留表截断。
问题在于,与示例中一样,holding table 可能包含主表中已经存在的项目。由于该键不允许重复值,因此该过程将失败。
一种选择是在插入过程中放置一个 where 子句,但主数据表有 1000 万多行,这可能需要很长时间。
有没有其他方法可以让程序在尝试插入时跳过/忽略重复项?