| From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
|---|---|
| To: | "Carl(dot)Weierstrass" <carl(dot)weierstrass(at)googlemail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org |
| Subject: | Re: bug or feature |
| Date: | 2026-10-05 14:12:35 |
| Message-ID: | 1ceec3736795f744417d6467796bad12e836ad1c.camel@cybertec.at |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Mon, 2026-10-05 at 10:26 +0200, Carl.Weierstrass wrote:
> I want to delete some data from table test1 und protocol the deleted
> data in table test2:
>
> The solution with two statements
>
> begin;
> insert into test2
> select * from test1
> where 1 = 1;
>
> delete from test1
> where 1 = 1
> returning *; -- show deleted lines
> commit;
>
> works fine, but the more elegant version in one single statement results
> in a syntax error
>
> begin;
> insert into test2
> delete from test1
> where 1 = 1
> returning *; --return deleted lines
> commit;
>
> psql:test.sql:32: FEHLER: Syntaxfehler bei »delete«
> ZEILE 2: delete from test1
>
> Is this a bug or a feature?
That's incorrect syntax.
Try
WITH cte AS (
DELETE FROM test1
RETURNING *
)
INSERT INTO test2
SELECT * FROM cte;
Yours,
Laurenz Albe
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David G. Johnston | 2026-10-05 14:32:21 | Re: bug or feature |
| Previous Message | Laurenz Albe | 2026-10-05 14:10:26 | Re: Parsing of hex encoding strings |