| From: | Vik Fearing <vik(dot)fearing(at)dalibo(dot)com> |
|---|---|
| To: | Herouth Maoz <herouth(at)unicell(dot)co(dot)il>, pgsql-sql(at)postgresql(dot)org |
| Subject: | Re: An archiving query - is it safe? |
| Date: | 2014-01-14 12:55:23 |
| Message-ID: | 52D533BB.5030602@dalibo.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
On 01/14/2014 12:06 PM, Herouth Maoz wrote:
> I have regular archiving scripts which traditionally did something like this
>
> BEGIN TRANSACTION;
> INSERT INTO a__archive
> SELECT * FROM a
> WHERE <condition>; -- date range condition
>
> DELETE FROM a
> WHERE <condition>; -- same date range condition
> COMMIT;
>
> This is "classic" SQL. I'm thinking of changing this into something like:
>
> WITH del AS ( DELETE FROM a WHERE <condition> RETURNING * )
> INSERT INTO a__archive SELECT * FROM del;
>
> As this would only access table "a" once, deleting and returning the records in the same access, which I believe will be more efficient.
>
> Is this safe to do? Is there any danger of losing data? Is it atomic?
Yes. No. Yes.
--
Vik
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Herouth Maoz | 2014-01-14 14:34:58 | Re: An archiving query - is it safe? |
| Previous Message | Herouth Maoz | 2014-01-14 11:06:35 | An archiving query - is it safe? |