Değiştirilen satırı döndür (RETURNING / OUTPUT)
Oracle
-- Tek satır: RETURNING ... INTO (PL/SQL bind variable)
UPDATE calisan SET maas = maas * 1.1
WHERE id = 5
RETURNING maas INTO :yeni_maas;
-- INSERT ile üretilen anahtarı geri al
INSERT INTO calisan (ad) VALUES ('Ayse')
RETURNING id INTO :yeni_id;RETURNING, INSERT/UPDATE/DELETE ile değiştirilen satırların değerlerini (ör. otomatik üretilen kimlik) ayrı bir SELECT'e gerek kalmadan geri döndürür. Oracle'da tek satır için RETURNING ... INTO bind variable'a, çok satır için RETURNING ... BULK COLLECT INTO koleksiyona yazılır.
PostgreSQL
INSERT INTO calisan (ad, maas)
VALUES ('Ayse', 15000)
RETURNING id, ad;
UPDATE calisan SET maas = maas * 1.1
WHERE departman = 'BT'
RETURNING id, maas;PostgreSQL'in RETURNING yan tümcesi çok esnektir: INSERT, UPDATE, DELETE ve MERGE deyimlerinden etkilenen satırların herhangi bir sütununu (hesaplanmış ifadeler dahil) doğrudan sonuç kümesi olarak döndürür. Üretilen seri/kimlik değerlerini almanın en temiz yoludur.
MySQL
-- MySQL'de RETURNING yoktur; üretilen anahtar ayrı alınır:
INSERT INTO calisan (ad, maas) VALUES ('Ayse', 15000);
SELECT LAST_INSERT_ID();
-- MariaDB 10.5+ INSERT ... RETURNING destekler:
INSERT INTO calisan (ad) VALUES ('Ayse') RETURNING id;MySQL standart RETURNING'i desteklemez; INSERT sonrası üretilen otomatik artan anahtar LAST_INSERT_ID() ile alınır, güncellenen değerler ayrı SELECT ile okunur. MariaDB ise 10.5'ten beri INSERT ... RETURNING, 10.0'dan beri DELETE ... RETURNING sunar.
SQL Server
INSERT INTO calisan (ad, maas)
OUTPUT INSERTED.id, INSERTED.ad
VALUES ('Ayse', 15000);
UPDATE calisan SET maas = maas * 1.1
OUTPUT DELETED.maas AS eski, INSERTED.maas AS yeni
WHERE id = 5;SQL Server'ın karşılığı OUTPUT yan tümcesidir: INSERTED (yeni değerler) ve DELETED (eski değerler) sözde tablolarına erişir; UPDATE'te ikisi de kullanılabilir. OUTPUT ... INTO ile sonuçlar bir tabloya/tablo değişkenine yazdırılabilir. Değişiklikleri denetim (audit) tablosuna aktarmak için idealdir.
MongoDB
// findOneAndUpdate değiştirilen belgeyi döndürür
db.calisan.findOneAndUpdate(
{ id: 5 },
{ $mul: { maas: 1.1 } },
{ returnDocument: "after" } // güncel hali döndür
)MongoDB'de findOneAndUpdate / findOneAndDelete / findOneAndReplace komutları etkilenen belgeyi tek atomik işlemde geri döndürür. returnDocument: 'before' değişiklikten önceki, 'after' sonraki hali verir. insertOne çağrısı ise eklenen belgenin _id değerini döndürür.
Redis
# Bazı komutlar eski/yeni değeri doğrudan döndürür:
SET sayac 0 GET # (6.2+) eski değeri döndürüp yeni değeri yazar (GETSET'in yerine)
INCR ziyaret # artırıp yeni değeri döndürürRedis'te ayrı bir RETURNING yoktur ama birçok yazma komutu sonucu doğrudan döndürür: INCR/INCRBY yeni değeri, SET ... GET eski değeri (GETSET 6.2'den beri deprecated), LPOP/RPOP çıkarılan elemanı verir. Atomik oku-yaz için bu davranış RETURNING'in yerini tutar.
Elasticsearch
# _update yanıtı sonucu döndürebilir:
POST calisan/_update/5
{
"script": { "source": "ctx._source.maas *= 1.1" },
"_source": true
}
# Yanıtta get._source ile güncel belge dönerElasticsearch'te index/update işlemleri sonuç meta bilgisini (_id, _version, result) döndürür. Güncellenmiş belgenin gövdesini almak için _update isteğine '_source': true eklenir; yanıttaki get alanında güncel _source yer alır. Ayrı bir GET çağrısına gerek kalmaz.