Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Реализации инструкции insert в разных СУБД

Реализации инструкции insert в разных СУБДОбщий синтаксис инструкции INSERT, приведенный в начале главы, включает наиболее часто используемые предложения, характерные для всех трех ведущих СУБД, а также стандарта SQL:2003. В этом разделе мы остановимся на некоторых характерных для конкретных реализаций отличиях. Основным отличием между общим синтаксисом и стандартом SQL:2003 является наличие в последнем дополнительного предложения DEFAULT

Инструкция INSERT в Oracle предоставляет множество дополнительных возможностей. К примеру, она может возвращать строки и сохранять их в некоторой предварительно определенной переменной (инструкции UPDATE и DELETE имеют такую же функциональность). Также в одной инструкции можно выполнить множество вставок (т. е. вставить значения из возвращенных инструкцией отбора строк в несколько таблиц), которые могут быть условными (т. е. строки, соответствующие одному условию, вставляются в одну таблицу, другому в другую, и т. д.). В инструкции INSERT можно использовать последовательности, протоколирование ошибок DML (см. предыдущий раздел) и многое другое. Последняя строка с инструкцией SELECT обязательна, даже несмотря на то, что в ней в данном примере нет особого смысла. Специальную таблицу DUAL можно использовать, когда синтаксис требует обязательной инструкции SELECT. В определенных ситуациях может потребоваться выполнить вставку в разные таблицы на основании значения некоторого столбца. В следующем примере продемонстрирована условная вставка на основании веса доставляемого товара. Обратите внимание на то, что значением поля PROD_SHIPWEIGHT_N у товара с номером 991 является NULL. Таким образом, он не смог удовлетворить ни одному из условий и попал в таблицу, указанную в предложении ELSE. Последнее, о чем стоит упомянуть, — это столбец идентичности. При вставке в таблицу, имеющую столбец идентичности, строки DB2 генерируют для этого поля значение. Если в определении столбца идентичности указан параметр GENERATE ALWAYS и вы попытаетесь вставить это значение вручную (отличное от DEFAULT), будет сгенерирована ошибка. Если же в определении использован параметр GENERATED BY DEFAULT, DB2 генерирует его значение только в том случае, если оно не указано явно в предложении VALUES.