| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Pól Ua Laoínecháin <linehanp(at)tcd(dot)ie> |
| Cc: | pgsql-general(at)lists(dot)postgresql(dot)org |
| Subject: | Re: RETURNING, CTEs and TRANSACTION ISOLATION levels... |
| Date: | 2021-05-14 15:40:07 |
| Message-ID: | 1885899.1621006807@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
=?UTF-8?B?UMOzbCBVYSBMYW/DrW5lY2jDoWlu?= <linehanp(at)tcd(dot)ie> writes:
> I was trying to do this:
> DELETE FROM t
> WHERE id IN
> INSERT INTO t_archiv
> (
> SELECT *
> FROM t
> WHERE EXTRACT(EPOCH FROM NOW()) - epok > 15613200
> )
> RETURNING id;
Try putting the INSERT ... RETURNING in a CTE (WITH clause).
We don't support putting RETURNING into any random place
where a sub-select can appear, because the semantics would
be too unpredictable. But a WITH has guaranteed evaluate-once
semantics, so DML with RETURNING is OK there.
(Maybe something more specific than a syntax error would
be nice ...)
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David G. Johnston | 2021-05-14 16:00:47 | Re: RETURNING, CTEs and TRANSACTION ISOLATION levels... |
| Previous Message | Pól Ua Laoínecháin | 2021-05-14 15:33:04 | RETURNING, CTEs and TRANSACTION ISOLATION levels... |