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



Pdf көрінісі
бет168/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   164   165   166   167   168   169   170   171   ...   256
sql osnovi yazika

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,
т. е. к команде в главном запросе, а не в общем табличном выражении, в котором
мы работаем с таблицей 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 *;
215


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


Достарыңызбен бөлісу:
1   ...   164   165   166   167   168   169   170   171   ...   256




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

    Басты бет