Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет163/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   159   160   161   162   163   164   165   166   ...   243
Байланысты:
Язык SQL. Базовый курс

WITH add_row AS
( INSERT INTO aircrafts_tmp
VALUES ( 'SU9', 'Sukhoi SuperJet-100', 3000 )
ON CONFLICT DO NOTHING
RETURNING *
)
INSERT INTO aircrafts_log
SELECT add_row.aircraft_code, add_row.model, add_row.range,
CURRENT_TIMESTAMP, 'INSERT'
FROM add_row;
Обратите внимание, что не будет выведено никаких сообщений об ошибках, как это
и предполагалось. Строка добавлена не будет:
INSERT 0 0
Нужно учитывать, что это сообщение относится к таблице aircrafts_log, т. е. к команде
в главном запросе, а не в общем табличном выражении WITH add_row AS (...), в кото-
ром мы работаем с таблицей aircrafts_tmp. Проверьте, не была ли добавлена строка в
таблицу aircrafts_tmp.
В том случае, когда в предложении ON CONFLICT не указана дополнительная инфор-
мация об именах столбцов или ограничений, по которым предполагается возможный
конфликт, проверка выполняется по первичному ключу и по уникальным ключам.
Давайте укажем конкретный столбец для проверки конфликтующих значений. Пусть
это будет столбец aircraft_code, т. е. первичный ключ. Для упрощения команды не бу-
дем использовать общее табличное выражение. Добавляемая строка будет иметь кон-
фликт с существующей строкой как по столбцу aircraft_code, так и по столбцу model.
INSERT INTO aircrafts_tmp
VALUES ( 'SU9', 'Sukhoi SuperJet-100', 3000 )
ON CONFLICT ( aircraft_code ) DO NOTHING
RETURNING *;
Получим только такое сообщение:
168


aircraft_code | model | range
---------------+-------+-------
(0 строк)
INSERT 0 0
Это сообщение было выведено потому, что в команду включено предложение
RETURNING *. Сообщение о дублировании значений столбца model не выводится.
Давайте в команде INSERT изменим значение столбца aircraft_code, чтобы оно стало
уникальным:


Достарыңызбен бөлісу:
1   ...   159   160   161   162   163   164   165   166   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет