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


 Обновление строк в таблицах



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

7.2. Обновление строк в таблицах
Команда UPDATE предназначена для обновления данных в таблицах. Начнем с того,
что покажем, как и при изучении команды INSERT, как можно организовать запись
выполненных операций в журнальную таблицу. Эта команда аналогична команде,
уже рассмотренной в предыдущем разделе. В ней также «полезная» работа выполня-
ется в общем табличном выражении, а запись в журнальную таблицу — в основном
запросе.
WITH update_row AS
( UPDATE aircrafts_tmp
SET range = range * 1.2
WHERE model ~ '^Bom'
RETURNING *
)
INSERT INTO aircrafts_log
SELECT ur.aircraft_code, ur.model, ur.range,
current_timestamp, 'UPDATE'
FROM update_row ur;
Выполнив команду, в ответ получим сообщение
INSERT 0 1
Напомним, что выведенное сообщение относится непосредственно к внешнему за-
просу, в котором выполняется операция INSERT, добавляющая строку в журнальную
таблицу. Конечно, если бы строка в таблице aircrafts_tmp не была успешно обнов-
лена, тогда предложение RETURNING * не возвратило бы внешнему запросу ни одной
строки, и, следовательно, тогда просто не было бы данных для формирования новой
строки в таблице aircrafts_log.
При использовании команды UPDATE в общем табличном выражении нужно учиты-
вать, что главный запрос может получить доступ к обновленным данным только че-
рез временную таблицу
, которую формирует предложение RETURNING:
...
FROM update_row ur;
Можно выполнить выборку из журнальной таблицы aircrafts_log, чтобы посмот-
реть — правда, не очень длинную — историю изменений строки с описанием само-
лета Bombardier CRJ-200.
219


Глава 7. Изменение данных
SELECT * FROM aircrafts_log


Достарыңызбен бөлісу:
1   ...   168   169   170   171   172   173   174   175   ...   256




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

    Басты бет