![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Оператор INSERT прибывает в три канонических формах. INSERT INTO table VALUES(...); Первая форма (с ключевым словом "VALUES") создает одну
или несколько новых строк в существующей таблице. Если
column-name после
table-name опущен, количество значений,
вставленных в каждую строку, должно совпасть с количеством колонок в
таблице. В этом случае результат оценки крайнего левого выражения от каждого
термина списка VALUES вставляется в крайний левый столбец каждой новой
строки и т.д. для каждого последующего выражения. Если список
column-name есть, то количество значений
в каждом термине списка VALUE должно соответствовать количеству указанных
колонок. Каждая из названных колонок новой строки
наполнена результатами оценки соответствующего выражения VALUES.
Столбцы таблицы, которые не появляются в списке столбцов, наполнены
значением столбца по умолчанию
(определено как часть CREATE TABLE)
или NULL, если никакое
значение по умолчанию
не определяется. INSERT INTO table SELECT ...; Вторая форма оператора INSERT содержит оператор
SELECT вместо VALUES.
Новый вход вставляется в таблицу для каждой строки данных, возвращенных,
выполняя оператор SELECT. Если список столбцов определяется, количество
колонок в результате SELECT должно совпасть с количеством пунктов в списке
столбцов. Иначе, если никакой список столбцов не определяется, количество
колонок в результате SELECT должно совпасть с количеством колонок в таблице.
Любой оператор SELECT, включая
составной SELECT и SELECT
с ORDER BY и/или
LIMIT,
может использоваться в операторе INSERT этой формы. Чтобы избежать двусмысленности парсинга, оператор SELECT должен всегда
содержать оператор Where, даже если тот пункт просто "WHERE true",
если есть upsert-clause.
Без оператора Where анализатор не знает, является ли символ "ON"
частью ограничения соединения SELECT или началом
upsert-clause. INSERT INTO table DEFAULT VALUES; Третья форма оператора INSERT с DEFAULT VALUES.
INSERT ... DEFAULT VALUES вставляет единственную новую строку
в названную таблицу. Каждая колонка новой строки наполнена
значением по умолчанию
или NULL, если никакое значение по умолчанию не определяется как часть
определения столбца в CREATE TABLE.
upsert-clause
не поддерживается после DEFAULT VALUES. Первое ключевое слово "INSERT" может быть заменено
"REPLACE" или "INSERT OR action", чтобы определить альтернативный
ограничительный алгоритм разрешения конфликтов
, чтобы использовать во время команды INSERT. Для совместимости с MySQL
анализатор позволяет использование единственного ключевого слова
REPLACE как псевдонима для
"INSERT OR REPLACE". Опциональный префикс "schema-name." в
table-name
поддерживается только для операторов INSERT верхнего уровня.
Имя таблицы должно быть неквалифицировано для операторов INSERT, которые
происходят в рамках CREATE TRIGGER.
Точно так же форма "DEFAULT VALUES" оператора INSERT поддерживается
только для операторов INSERT верхнего уровня, а не для
операторов INSERT в триггерах. Опциональная фраза "AS alias"
обеспечивает альтернативное название таблицы, в которую вставляется
содержание. Имя псевдонима может использоваться в пунктах WHERE и SET в
UPSERT. Если нет никакого
upsert-clause,
alias бессмыслен, но также и безопасен. Смю описание UPSERT
для дополнительного синтаксиса, который может заставить INSERT вести себя как
UPDATE, если INSERT иначе нарушил бы ограничение уникальности.
upsert clause не позволен в
"INSERT ... DEFAULT VALUES".
Choose any three.
1. Overview