Заявление INSERT OVER?
Какая разница между
INSERT INTO table VALUES (values)
и
INSERT OVER table VALUES (values)
?
Ответы
Ответ 1
Люди в Microsoft говорят:
Спасибо за сообщение об этой проблеме. Мы продолжать распознавать ключевое слово OVER наряду с ключевым словом INTO (с то же значение) в инструкциях INSERT для обеспечить обратную совместимость с предыдущих версий SQL Server. Это не должно представлять проблемы для разработки приложений.
Евгений Забокрицкий, SQL Engine
Ответ 2
Из всех зарезервированных ключевых слов работают только INTO
и OVER
.
SQL:2003
упоминает ключевое слово OVERRIDING
, чтобы переопределить идентификатор (в настоящее время поддерживается только DB2
)
Возможно, SQL Server
анализирует его на данный момент, но фактически не реализует.
Сгенерированные планы идентичны, а ParameterizedText
расширяется на INSERT INTO
.
Итак, для 2008R2
ответ будет следующим:
Никакой разницы, кроме того, что INSERT OVER
уже потратил впустую около 50 человеко-часов самых любопытных разработчиков на данный момент, и есть больше, чтобы пойти
Ответ 3
Согласно этой странице:
http://msdn.microsoft.com/en-us/library/ms174335.aspx
INSERT OVER не является частью определенного дерева синтаксиса. Поэтому, даже если он работает, он, вероятно, официально не поддерживается Microsoft.
Ответ 4
Предположительно INSERT OVER
предполагается перезаписать существующую строку в таблице. Для этого вы фактически используете
UPDATE <table> SET <field=value, field2=value2> WHERE <condition to pinpoint row>
Ответ 5
Извинения за воскрешение мертвой нити, но это видно в верхней части поиска Google для INSERT OVER. Я надеялся найти лучшее объяснение/пример здесь, но эта ссылка делает достойную работу отправной точкой. Если вы ищете информацию о инструкции INSERT OVER DML (например, команду Merge), посмотрите на эту ссылку: https://decipherinfosys.wordpress.com/2007/11/28/sql-server-2008-insert-over-a-dml-statement/