Учебное пособие Санкт-Петербург «бхв-петербург»


ON CONFLICT ON CONSTRAINT aircrafts_tmp_pkey



Download 1,88 Mb.
Pdf ko'rish
bet170/256
Sana21.02.2022
Hajmi1,88 Mb.
#24505
TuriУчебное пособие
1   ...   166   167   168   169   170   171   172   173   ...   256
Bog'liq
morgunov e p postgresql osnovy yazyka sql

ON CONFLICT ON CONSTRAINT aircrafts_tmp_pkey
DO UPDATE SET model = excluded.model,
range = excluded.range
RETURNING *;
Поскольку мы включили в команду предложение RETURNING *, то СУБД сообщит
о том, какие значения получат атрибуты обновленной строки. Как и планировалось,
изменилось только значение атрибута model.
aircraft_code |
model
| range
---------------+-----------------+-------
SU9
| Sukhoi SuperJet | 3000
(1 строка)
В случае конфликта по столбцу aircraft_code будет обновлена та строка в табли-
це aircrafts_tmp, с которой конфликтовала вновь добавляемая строка. В резуль-
тате новая строка добавлена не будет, а будет обновлено значение столбца model
в строке, уже находящейся в таблице. А где PostgreSQL возьмет значение для ис-
пользования в команде UPDATE? Это значение будет взято из специальной таблицы
excluded, которая поддерживается самой СУБД. В этой таблице хранятся все строки,
предлагаемые для вставки в рамках текущей команды INSERT. Вот это значение —
excluded.model. Значение столбца range также будет обновлено, но его новое зна-
чение — excluded.range — совпадает со старым.
Обратите внимание, что в предложении DO UPDATE не указывается имя таблицы, т. к.
таблица будет та же самая, которая указана в предложении INSERT.
Предложение ON CONFLICT DO UPDATE гарантирует атомарное выполнение опера-
ции вставки или обновления строк. Атомарность означает, что проверка наличия
конфликта и последующее обновление выполняются как неделимая операция, т. е.
другие транзакции не могут изменить значение столбца, вызывающее конфликт, так,
чтобы в результате конфликт исчез и уже стало возможным выполнить операцию
INSERT, а не UPDATE, или, наоборот, в случае отсутствия конфликта он вдруг появил-
ся, и уже операция INSERT стала бы невозможной. Такая атомарная операция даже
имеет название UPSERT — «UPDATE или INSERT».
Для массового ввода строк в таблицы используется команда COPY. Эта команда может
копировать данные из файла в таблицу. Причем, в качестве файла может служить и
стандартный ввод. Хотя в этом разделе пособия мы, в основном, говорим о вставке
строк в таблицы, но нужно сказать и о том, что эта команда может также копировать
данные из таблиц в файлы и на стандартный вывод.
217



Download 1,88 Mb.

Do'stlaringiz bilan baham:
1   ...   166   167   168   169   170   171   172   173   ...   256




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish