container
を表す多対多の関係がitem
を保持しています。return句は常に最初に実行されますか?
私はテーブルに主キーrow_idを持っています。
私は4つの行:(container_id, item_id) values (1778712425160346751, 4)
を挿入します。これらの行は、前述の一意の行ID以外は同一です。
私はその後、次のクエリを実行します。
delete from contains
where item_id = 4 and
container_id = '1778712425160346751' and
row_id =
(
select max(row_id) from contains
where container_id = '1778712425160346751' and
item_id = 4
)
returning
(
select count(*) from contains
where container_id = '1778712425160346751' and
item_id = 4
);
は今、私は必要な動作ですが、それは予想されたものではありません3は、このクエリから返されたが、私は4の取得4を得た取得することが期待しました。
私の質問はです。削除前にreturning
句が実行されることはいつも期待できますか?これは特定のバージョンまたは特定のソフトウェアの特異性ですか?
私は、更新を行う場合には、戻り値が更新**後**値であると思われることを指摘したいと思います。 ... – tenCupMaximum
削除された列や更新された列の値は、常に最新の値になります。ここでは、 'returning'節の**サブクエリ**について説明しています。 – klin
ああ、もし私が 'returned selectedColumn from table'を返すと、古い値を取得します。もし' returnedColumn'を返すと、更新された値を取得します。それは賢明な結果です。 – tenCupMaximum