Thread: Primary key with oid + name : error, which solution ?

Primary key with oid + name : error, which solution ?

From
Stéphane Chomat
Date:
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>

Re: Primary key with oid + name : error, which solution ?

From
Roberto Mello
Date:
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.


Re: Primary key with oid + name : error, which solution ?

From
Stephan Szabo
Date:
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>).



Re: Primary key with oid + name : error, which solution ?

From
Stéphane Chomat
Date:
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>

Re: Primary key with oid + name : error, which solution ?

From
Stephan Szabo
Date:
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.