6.4. ÐозвÑÐ°Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· изменÑннÑÑ ÑÑÑок
Ðногда бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ полÑÑаÑÑ Ð´Ð°Ð½Ð½Ñе из модиÑиÑиÑÑемÑÑ
ÑÑÑок в пÑоÑеÑÑе иÑ
обÑабоÑки. ÐÑо возможно Ñ Ð¸ÑполÑзованием пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ RETURNING, коÑоÑое можно задаÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ INSERT, UPDATE и DELETE. ÐÑименение RETURNING позволÑÐµÑ Ð¾Ð±Ð¾Ð¹ÑиÑÑ Ð±ÐµÐ· дополниÑелÑного запÑоÑа к базе Ð´Ð»Ñ ÑбоÑа даннÑÑ
и ÑÑо оÑобенно Ñенно, когда как-Ñо инаÑе ÑÑÑдно полÑÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑннÑе ÑÑÑоки надÑжнÑм обÑазом.
РпÑедложении RETURNING допÑÑкаеÑÑÑ Ñо же ÑодеÑжимое, ÑÑо и в вÑÑ
одном ÑпиÑке ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT (Ñм. Раздел 7.3). Ðно Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¸Ð¼ÐµÐ½Ð° ÑÑолбÑов Ñелевой ÑаблиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð»Ð¸ знаÑÐµÐ½Ð¸Ñ Ð²ÑÑажений Ñ ÑÑими ÑÑолбÑами. Также ÑаÑÑо пÑименÑеÑÑÑ ÐºÑаÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ RETURNING *, вÑбиÑаÑÑÐ°Ñ Ð²Ñе ÑÑолбÑÑ Ñелевой ÑаблиÑÑ Ð¿Ð¾ поÑÑдкÑ.
Ркоманде INSERT даннÑе, вÑдаваемÑе в RETURNING, обÑазÑÑÑÑÑ Ð¸Ð· ÑÑÑоки в Ñом виде, в каком она бÑла вÑÑавлена. ÐÑо не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ пÑи пÑоÑÑом добавлении, Ñак как в ÑезÑлÑÑаÑе бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñе же даннÑе, ÑÑо бÑли пеÑÐµÐ´Ð°Ð½Ñ ÐºÐ»Ð¸ÐµÐ½Ñом. Ðо ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÐµÐ½Ñ Ñдобно пÑи иÑполÑзовании вÑÑиÑлÑемÑÑ
знаÑений по ÑмолÑаниÑ. ÐапÑимеÑ, еÑли в ÑаблиÑе еÑÑÑ ÑÑÐ¾Ð»Ð±ÐµÑ serial, в коÑоÑом генеÑиÑÑÑÑÑÑ ÑникалÑнÑе иденÑиÑикаÑоÑÑ, команда RETURNING Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑиÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ, назнаÑеннÑй новой ÑÑÑоке:
CREATE TABLE users (firstname text, lastname text, id serial primary key);
INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING id; ÐÑедложение RETURNING Ñакже оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ñ INSERT ... SELECT.
Ркоманде UPDATE даннÑе, вÑдаваемÑе в RETURNING, обÑазÑÑÑÑÑ Ð½Ð¾Ð²Ñм ÑодеÑжимÑм изменÑнной ÑÑÑоки. ÐапÑимеÑ:
UPDATE products SET price = price * 1.10 WHERE price <= 99.99 RETURNING name, price AS new_price;
Ркоманде DELETE даннÑе, вÑдаваемÑе в RETURNING, обÑазÑÑÑÑÑ ÑодеÑжимÑм ÑдалÑнной ÑÑÑоки. ÐапÑимеÑ:
DELETE FROM products WHERE obsoletion_date = 'today' RETURNING *;
ÐÑли Ð´Ð»Ñ Ñелевой ÑаблиÑÑ Ð·Ð°Ð´Ð°Ð½Ñ ÑÑиггеÑÑ (Ñм. ÐлавÑ 35), в RETURNING вÑдаÑÑÑÑ Ð´Ð°Ð½Ð½Ñе из ÑÑÑоки, изменÑнной ÑÑиггеÑами. Таким обÑазом, RETURNING ÑаÑÑо пÑименÑеÑÑÑ Ð¸ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ ÑодеÑжимое ÑÑолбÑов, изменÑемÑÑ
ÑÑиггеÑами.