Thread: Primary key with oid + name : error, which solution ?
I create two table repertory and person. And i have an error : > CREATE TABLE repertory (name_rep name, attribut text[], PRIMARY KEY(name_rep)); > CREATE TABLE person (nam_rep repertory, name_pers text, url text, eadr text, tel text, attribut text[], PRIMARY KEY(name_pers,nam_rep)); NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'person_pkey' for table 'person' ERROR: DefineIndex: type repertory has no default operator class which solution for this problem ? <flushright><bold><bigger>Stéphane Chomat</bigger></bold> 22 rue Le Brix 38100 Grenoble 603-999-478 steph_chomat@mac.com</flushright>
On Wed, Oct 31, 2001 at 10:06:22AM +0100, St?phane Chomat wrote: > I create two table repertory and person. And i have an error : > > > CREATE TABLE repertory (name_rep name, attribut text[], PRIMARY > KEY(name_rep)); > > CREATE TABLE person (nam_rep repertory, name_pers text, url text, > eadr text, tel text, attribut text[], PRIMARY KEY(name_pers,nam_rep)); > > NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index > 'person_pkey' for table 'person' > ERROR: DefineIndex: type repertory has no default operator class Unless it's some OO extension in PostgreSQL that I don't know about, I have never heard of the type "repertory" and "name". I don't think you can use your table name as a data type. BTW, you should also stay away from arrays (IMHO), since they are non-standard. -Roberto -- +----| http://fslc.usu.edu USU Free Software & GNU/Linux Club |------+ Roberto Mello - Computer Science, USU - http://www.brasileiro.net http://www.sdl.usu.edu - Space Dynamics Lab, Developer NY cops go bar-hopping; LA cops go night-clubbing.
On Wed, 31 Oct 2001, [ISO-8859-1] St�phane Chomat wrote: > I create two table repertory and person. And i have an error : > > > CREATE TABLE repertory (name_rep name, attribut text[], PRIMARY > KEY(name_rep)); > > CREATE TABLE person (nam_rep repertory, name_pers text, url text, eadr > text, tel text, attribut text[], PRIMARY KEY(name_pers,nam_rep)); > > NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'person_pkey' > for table 'person' > ERROR: DefineIndex: type repertory has no default operator class > > which solution for this problem ? You'd probably be best off using the name of the repertory in the person table along with a foreign key. Also, IIRC name is mostly meant as an internal type. You probably really want varchar(<length>).
Yes, name is an internal type. The problem is in the type of the table repertory. If it is not possible to use this syntaxe, i will take the type char. I just try the new possibility of postgressql. thanks. steph. Le mercredi 31 octobre 2001, à 11:08 , Stephan Szabo a écrit : <excerpt>On Wed, 31 Oct 2001, [ISO-8859-1] Stéphane Chomat wrote: <excerpt>I create two table repertory and person. And i have an error : <excerpt>CREATE TABLE repertory (name_rep name, attribut text[], PRIMARY </excerpt>KEY(name_rep)); <excerpt>CREATE TABLE person (nam_rep repertory, name_pers text, url text, eadr </excerpt>text, tel text, attribut text[], PRIMARY KEY(name_pers,nam_rep)); NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'person_pkey' for table 'person' ERROR: DefineIndex: type repertory has no default operator class which solution for this problem ? </excerpt> You'd probably be best off using the name of the repertory in the person table along with a foreign key. Also, IIRC name is mostly meant as an internal type. You probably really want varchar(<<length>). </excerpt><flushright><bold><bigger>Stéphane Chomat</bigger></bold> 22 rue Le Brix 38100 Grenoble 603-999-478 steph_chomat@mac.com</flushright>
On Wed, 31 Oct 2001, [ISO-8859-1] St�phane Chomat wrote: > Yes, name is an internal type. The problem is in the type of the table > repertory. If it is not > possible to use this syntaxe, i will take the type char. I just try the > new possibility of postgressql. Yeah. I think the problem is that you'd need an operator class to take two objects of type repertory and sort them because the uniqueness is handled via with the index system.