Обсуждение: Parent table has not oid?
Dear All: Please disregerd my last email. I want to create a delete cascade in children tables. The primary key of parent table is oid. CREATE TABLE Link ( Protein_ID oid CONSTRAINT one REFERENCES Protein (oid) ON DELETE CASCADE, Link varchar(128) ); Create child table is ok. When I insert a record into this child table, it says "ERROR: constraint one: table protein does not have an attribute oid" Why? Thanks. _________________________________________________________________ STOP MORE SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail
"Zhidian Du" <duzhidian@hotmail.com> writes: > CREATE TABLE Link ( > Protein_ID oid > CONSTRAINT one > REFERENCES Protein (oid) > ON DELETE CASCADE, > Link varchar(128) > ); > When I insert a record into this child table, it says > "ERROR: constraint one: table protein does not have an attribute oid" How old is your Postgres? IIRC, this was made to work in 7.2 or thereabouts. Note that using OID as a foreign key is not really a good idea, because it's problematic to dump and restore. You'd be better off with a serial column as primary key. regards, tom lane
On Sun, 10 Nov 2002, Tom Lane wrote: > "Zhidian Du" <duzhidian@hotmail.com> writes: > > CREATE TABLE Link ( > > Protein_ID oid > > CONSTRAINT one > > REFERENCES Protein (oid) > > ON DELETE CASCADE, > > Link varchar(128) > > ); > > When I insert a record into this child table, it says > > "ERROR: constraint one: table protein does not have an attribute oid" > > How old is your Postgres? > > IIRC, this was made to work in 7.2 or thereabouts. > > Note that using OID as a foreign key is not really a good idea, because > it's problematic to dump and restore. You'd be better off with a serial > column as primary key. Yeah, I found that out the hardway and spent a couple days rewriting an app that had used OIDs in a way it really shouldn't have. The only time I use OIDs now is to get rid of duplicate rows by hand or such like that.