Insert (SQL)

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Neurocod (обсуждение | вклад) в 17:11, 10 июня 2010 (викификация). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

INSERT — оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.

Примеры использования

Используя перечисление значений, с указанием столбцов:

insert into <название таблицы> ([<Имя столбца>, ... ]) values (<Значение>,...)

Используя перечисление значений, без указания столбцов:

insert into <название таблицы> values (<Значение>,...)

Используя select:

insert into <название таблицы> select <имя столбца>,... from <название таблицы>

В последнем случае, в таблицу может вставиться более одной записи. Если в таблице есть другие поля требующие заполнения, но не указанные в операторе insert, для них будет установлено значение по умолчанию, либо null, если значение по умолчанию не указано.

Особенности

Во время выполнения оператора могут возникнуть ошибки:

  • если при создании таблицы для поля был указан параметр not null и не было определено значение по умолчанию (см. create), то при отсутствии для него вставляемого значения возникнет ошибка. Решение очевидно:
    • либо убрать параметр not null
    • либо указать значение по умолчанию
    • либо вставить значение
  • если произойдет попытка вставки в поле с типом identity (автоинкремент), то также произойдет ошибка. Решить проблему можно двумя способами:
    • не вставлять значение в это поле
    • указать опцию identity_insert on после чего вставить уникальное значение для этого столбца

Опция identity_insert

Включить опцию:

set identity_insert on

После включения этой опции можно вставлять значения в поля определенные как identity. Нужно учесть, что значение должно быть уникальным. Включать эту опцию не рекомендуется, её следует использовать в записях в которых нужно сменить некоторые столбцы, не поменяв её identity столбец (например если по этому столбцу подцепляется другая таблица)

См. также