У меня есть следующие таблицы:
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
). Стол удерживания затем усекается.
Проблема заключается в том, что, как в примере, таблица удержания может содержать элементы, которые уже существуют в основной таблице. Поскольку ключ не позволит дублировать значения, процедура завершится неудачно.
Один из вариантов заключается в том, чтобы поместить предложение where в вставку proc, но в таблице основных данных есть 10 миллионов + строк, и это может занять много времени.
Есть ли другой способ заставить процедуру просто пропускать/игнорировать дубликаты при попытке вставить?