Инструменты пользователя

Инструменты сайта


update_or_insert



UPDATE OR INSERT

Модификация или вставка записи

Версии сервера

0.9 1.0 1.5.3 1.5.4 1.5.5 2.0 2.0.3 2.0.4 2.1 2.5 3.0
- - - - - - - - Да Да Да

Доступно в

Формат

  UPDATE OR INSERT INTO <table or view> [(<column_list>)]
  VALUES (<value_list>)
  [MATCHING (<column_list>)]
  [RETURNING <column_list> [INTO <variable_list>]]

Описание

В таблице проводится поиск по полям перечисленным в MATCHING.

Если записи нашлись - заменяем их. Иначе вставляем новые.

Если MATCHING не указан, то используется PRIMARY_KEY

Для успешного :?:выполнения необходимы права как на INSERT так и на UPDATE таблицы

Для успешного :!: выполнения RETURNING запрос должен работать с одной записью a

Пример

Задача: Установить правильную валюту для страны «Украина». Если этой страны нет, то завести :-)

UPDATE OR INSERT INTO country (country, currency)
VALUES ('Ukraine','hryvnia')
matching (country)

Выполняем скрипт пару раз и замечаем:

первое выполнение «1 record(s) was(were) inserted into COUNTRY» - произошла вставка

последующие «1 record(s) was(were) updated in COUNTRY» - апдейт

Ну и если учесть, что поле в MATCHING у нас совпадает с ключем таблицы, то можно смело сие предложение (matching) удалять

См. также

Источник

Firebird_v2.1.0.ReleaseNotes.pdf

update_or_insert.txt · Последнее изменение: 2025/02/11 04:25 — attid