pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
how to add primary key to existing table with multiple primary keys
3+ messages / 3 participants
[nested] [flat]

* how to add primary key to existing table with multiple primary keys
@ 2006-02-24 01:45 Daniel Joo <djoo@vistagen-inc.com>
  2006-03-01 02:53 ` Re: how to add primary key to existing table with multiple Stephan Szabo <sszabo@megazone.bigpanda.com>
  2006-03-01 10:17 ` Re: how to add primary key to existing table with multiple primary keys Mauricio Fernandez A. <mfacontacto@ono.com>
  0 siblings, 2 replies; 3+ messages in thread

From: Daniel Joo @ 2006-02-24 01:45 UTC (permalink / raw)
  To: pgsql-sql

Hi there,

 

I am trying to add another primary key to an existing table with two other
primary keys.  I got the following error when I tried this command:

 

alter table extprobe2tissue ADD primary key (expid);

ERROR:  multiple primary keys for table "extprobe2tissue" are not allowed

 

The details of the extprobe2tissue table is: 

 

\d extprobe2tissue;

          Table "public.extprobe2tissue"

   Column    |          Type          | Modifiers

-------------+------------------------+-----------

 probeid     | integer                | not null

 tissueid    | integer                | not null

 value       | double precision       | not null

 entrydate   | date                   | not null

 description | character varying(200) |

 qval        | double precision       |

 expid       | integer                | not null

Indexes:

    "extprobe2tissue_pkey" PRIMARY KEY, btree (probeid, tissueid)

    "extprobe2tissue_probeid" btree (probeid)

    "extprobe2tissue_tissueid" btree (tissueid)

Foreign-key constraints:

    "extprobe2tissue_tissueid_fkey" FOREIGN KEY (tissueid) REFERENCES
tissue(tissueid)

    "extprobe2tissue_probeid_fkey" FOREIGN KEY (probeid) REFERENCES
extprobe(probeid)

 

Any suggestion would be much appreciated.

 

Thanks!  

^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: how to add primary key to existing table with multiple
  2006-02-24 01:45 how to add primary key to existing table with multiple primary keys Daniel Joo <djoo@vistagen-inc.com>
@ 2006-03-01 02:53 ` Stephan Szabo <sszabo@megazone.bigpanda.com>
  1 sibling, 0 replies; 3+ messages in thread

From: Stephan Szabo @ 2006-03-01 02:53 UTC (permalink / raw)
  To: Daniel Joo <djoo@vistagen-inc.com>; +Cc: pgsql-sql

On Thu, 23 Feb 2006, Daniel Joo wrote:

> I am trying to add another primary key to an existing table with two
> other primary keys.  I got the following error when I tried this
> command:

You only can have one primary key.  The table you gave has a single
primary key with two columns.  Are you trying to guarantee that expid
along is unique or that the set (probeid, tissueid, expid) is unique?

You can make expid UNIQUE and NOT NULL for the first case which is similar
to a primary key (although it's not a default foreign key target).  In the
second you can drop the current constraint and add one on the three
columns.

> Indexes:
>
>     "extprobe2tissue_pkey" PRIMARY KEY, btree (probeid, tissueid)
>     "extprobe2tissue_probeid" btree (probeid)
>     "extprobe2tissue_tissueid" btree (tissueid)



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: how to add primary key to existing table with multiple primary keys
  2006-02-24 01:45 how to add primary key to existing table with multiple primary keys Daniel Joo <djoo@vistagen-inc.com>
@ 2006-03-01 10:17 ` Mauricio Fernandez A. <mfacontacto@ono.com>
  1 sibling, 0 replies; 3+ messages in thread

From: Mauricio Fernandez A. @ 2006-03-01 10:17 UTC (permalink / raw)
  To: pgsql-sql

Your table has a primary key yet, so you can?t add a second primary key.
You only can define one pk, however it can be composed as your table has (it
now has 2 columns), so I think you need to drop the current pk and add again
the new pk with your 3 columns (probeid, tissueid, expid).

Review this
http://www.postgresql.org/docs/8.1/interactive/ddl-constraints.html#AEN2038

Mauricio Fernandez A.
Ingeniero de Sistemas
Universidad Autonoma de Manizales (Colombia)

  -----Mensaje original-----
  De: pgsql-sql-owner@postgresql.org
[mailto:pgsql-sql-owner@postgresql.org]En nombre de Daniel Joo
  Enviado el: viernes, 24 febrero, 2006 2:45
  Para: pgsql-sql@postgresql.org
  Asunto: [SQL] how to add primary key to existing table with multiple
primary keys


  Hi there,



  I am trying to add another primary key to an existing table with two other
primary keys.  I got the following error when I tried this command:



  alter table extprobe2tissue ADD primary key (expid);

  ERROR:  multiple primary keys for table "extprobe2tissue" are not allowed



  The details of the extprobe2tissue table is:



  \d extprobe2tissue;

            Table "public.extprobe2tissue"

     Column    |          Type          | Modifiers

  -------------+------------------------+-----------

   probeid     | integer                | not null

   tissueid    | integer                | not null

   value       | double precision       | not null

   entrydate   | date                   | not null

   description | character varying(200) |

   qval        | double precision       |

   expid       | integer                | not null

  Indexes:

      "extprobe2tissue_pkey" PRIMARY KEY, btree (probeid, tissueid)

      "extprobe2tissue_probeid" btree (probeid)

      "extprobe2tissue_tissueid" btree (tissueid)

  Foreign-key constraints:

      "extprobe2tissue_tissueid_fkey" FOREIGN KEY (tissueid) REFERENCES
tissue(tissueid)

      "extprobe2tissue_probeid_fkey" FOREIGN KEY (probeid) REFERENCES
extprobe(probeid)



  Any suggestion would be much appreciated.



  Thanks!

^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~2006-03-01 10:17 UTC | newest]

Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2006-02-24 01:45 how to add primary key to existing table with multiple primary keys Daniel Joo <djoo@vistagen-inc.com>
2006-03-01 02:53 ` Re: how to add primary key to existing table with multiple Stephan Szabo <sszabo@megazone.bigpanda.com>
2006-03-01 10:17 ` Mauricio Fernandez A. <mfacontacto@ono.com>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox