Заявление 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/