НЕ ВСТАВЛЯЙТЕ ДУБЛИКАТЫ СТРОК
Последовательность команд в предшествующем
разделе может быть проблематичной. Продавец Serres находится в San Jose, и следовательно будет
вставлен с помощью
первой команды. Вторая команда попытается вставить его снова, поскольку он имеет еще одного
заказчика в San Jose. Если
имеются любые ограничения в таблице SJpeople которые вынуждают ее значения быть уникальными,
эта вторая вставка
потерпит неудачу ( как это и должно было быть). Двойные строки это плохо.
Было бы лучше если бы вы могли как-то выяснить, что эти значения уже были вставлены в таблицу,
прежде
чем вы попытаетесь сделать это снова, с помощью добавления другого подзапроса ( использующего
операторы типа EXISTS,
IN, < > ALL, и так далее ) к предикату. К сожалению, чтобы сделать эту работу, вы должны будете
сослаться на саму таблицу
SJpeople в предложении FROM этого нового подзапроса, а, как мы говорили ранее, вы не можете
ссылаться на таблицу
которая задействована ( целиком ) в любом подзапросе команды модификации. В случае INSERT,
это будет также
препятствовать соотнесенным подзапросам, основанным на таблице в которую вы вставляете
значения. Это имеет значение, потому что, с помощью INSERT, вы создаете новую строку в таблице.
"Текущая строка" не будет существовать до тех
пор, пока INSERT не закончит ее обрабатывать.