Обсуждение: Reference integrity question

Поиск
Список
Период
Сортировка

Reference integrity question

От
Evgen Potemkin
Дата:
Good time of day!

I have two tables news(newsid int4, newscltid int4 references clt(cltid) match full,newstext text)
and clt(cltid int4, somedata text).
after clt is renamed , for ex. to clt_old, newscltid start to reference to clt_old.cltid. i'm create new table
clt(cltidint4, anotherdata text);
 

is there any way to make newscltid reference to newly created clt, beside
recreation of news ?

thank in advance,

---
.evgen





Re: Reference integrity question

От
Stephan Szabo
Дата:
On Fri, 27 Dec 2002, Evgen Potemkin wrote:

> Good time of day!
>
> I have two tables
>   news(newsid int4, newscltid int4 references clt(cltid) match full,newstext text)
> and
>   clt(cltid int4, somedata text).
> after clt is renamed , for ex. to clt_old, newscltid start to reference to clt_old.cltid.
>   i'm create new table clt(cltid int4, anotherdata text);
>
> is there any way to make newscltid reference to newly created clt, beside
> recreation of news ?

If you mean that all newscltids should reference the new table (presumably
already loaded)...

Since you haven't given a version, let's guess 7.3, in which case the
constraint should probably be named "$1" and you can do an
ALTER TABLE news drop constraint "$1";
ALTER TABLE news add foreign key (newscltid) references clt(cltid) match
full;

but it's tougher in older versions.



Re: Reference integrity question

От
Stephan Szabo
Дата:
On Sat, 4 Jan 2003, Evgen Potemkin wrote:

> > > I have two tables
> > >   news(newsid int4, newscltid int4 references clt(cltid) match full,newstext text)
> > > and
> > >   clt(cltid int4, somedata text).
> > > after clt is renamed , for ex. to clt_old, newscltid start to reference to clt_old.cltid.
> > >   i'm create new table clt(cltid int4, anotherdata text);
> > >
> > > is there any way to make newscltid reference to newly created clt, beside
> > > recreation of news ?
> >
> > If you mean that all newscltids should reference the new table (presumably
> > already loaded)...
> >
> > Since you haven't given a version, let's guess 7.3, in which case the
> > constraint should probably be named "$1" and you can do an
> > ALTER TABLE news drop constraint "$1";
> > ALTER TABLE news add foreign key (newscltid) references clt(cltid) match
> > full;
> >
> v 7.3, but i'm upgraded from 7.2
> \d news
> shows that there is no constraints, but constraint triggers a la
> RI_ConstraintTrigger_262762.
> when i'm dumps schema, first of trigger func parameters is '<unnamed>', so i
> guess it's a contraint name.

In that case you'll need to drop the triggers manually (there are three
triggers, one on the fk table and two on the pw table) and add the
constraint using ALTER TABLE.  For info on the triggers, there's a couple
of documents on techdocs.