Re: Sometimes referential integrity seems not to work

From: "scott(dot)marlowe" <scott(dot)marlowe(at)ihs(dot)com>
To: Jan Wieck <JanWieck(at)yahoo(dot)com>
Cc: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Enio Schutt Junior <enio(at)pmpf(dot)rs(dot)gov(dot)br>, <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Sometimes referential integrity seems not to work
Date: 2004-02-03 16:27:13
Message-ID: Pine.LNX.4.33.0402030926190.23444-100000@css120.ihs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Tue, 3 Feb 2004, Jan Wieck wrote:

> scott.marlowe wrote:
>
> > On Mon, 2 Feb 2004, Jan Wieck wrote:
> >
> >> Stephan Szabo wrote:
> >>
> >> > On Sat, 31 Jan 2004, Tom Lane wrote:
> >> >
> >> >> Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> writes:
> >> >> > On Mon, 26 Jan 2004, Enio Schutt Junior wrote:
> >> >> >> In a database I am working, I sometimes have to delete all the records in
> >> >> >> some tables. According to the referential integrity defined in the creation
> >> >> >> of the tables, postmaster should not delete the records, but it does. I have
> >> >> >> used the following commands: "delete from table_1" and "truncate table_1".
> >> >> >> ...
> >> >> >> can the postgres user delete records despite referential integrity?
> >> >>
> >> >> I think the first PG release or two that had TRUNCATE TABLE would allow
> >> >> you to apply it despite the existence of foreign-key constraints on the
> >> >> table. Recent releases won't though.
> >> >
> >> > Yeah, truncate didn't worry me much, but the implication that delete from
> >> > table_1; worked did.
> >>
> >> TRUNCATE cannot be used inside of a transaction, and since 7.3 it checks
> >> for foreign keys. So I guess Enio is getting but ignoring the error
> >> message when trying the delete, but then the truncate does the job in
> >> his pre-7.3 database.
> >
> > Yes it can. I think it was starting in 7.3.
>
> Okay, so you're the third one correcting me on this. Now can any of you
> violate a foreign key constraint with anything else than using truncate
> in a pre-7.3 database? Because I can't do that and that was the original
> problem.

Our production machine is running 7.2, and I get this:

begin;
BEGIN
=# truncate test;
ERROR: TRUNCATE TABLE cannot run inside a transaction block
=# commit;
COMMIT
=# select * from test;
info | id
------+----
abc | 1
def | 2
(2 rows)

So, at least in 7.2, it won't let me truncate. I'm not running any 7.3
boxes, just 7.4 and 7.2, so I can't test it on 7.3.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message scott.marlowe 2004-02-03 16:31:52 Re: Sometimes referential integrity seems not to work
Previous Message Tomasz Myrta 2004-02-03 16:03:19 Re: date function problem