Я удалил 100 (из 500) строк из таблицы, в которой есть кластерный первичный ключ, состоящий из двух значений столбца. В предложении WHERE
использовался столбец, отсутствующий в каком-либо ключе или индексе.
DELETE myTABLE WHERE data1='0'
Строки были удалены, и я запустил запрос, чтобы проверить себя.
Однако я попытался вставить строки обратно в myTABLE с использованием ...
INSERT INTO myTABLE (pkval1, pkval2, data1, data2)
SELECT srcVal1, srcVal2, srcData1, srcData2
FROM mySourceTable
В mySourceTable
столбцы srcVal
и srcVal2
образуют уникальный индекс, но не являются первичным ключом.
В результате возникла ошибка:
Нарушение ограничения PRIMARY KEY 'PK_MYTABLE' Невозможно вставить дубликат ключа в объект 'dbo.myTable'. Дублирующее значение ключа: {значение в srcVal2}
Я просмотрел все значения ключей в mySourceTable
, и они были действительны.
Вопрос: Если я удалил строки, почему я не смог бы их заново вставить?
У меня никогда не было этой проблемы за многие годы программирования SQL. Но я устал и уверен, что слеп к чему-то простому.