Re: CREATE TABLE with foreign key and primary key

From: "Oliver Elphick" <olly(at)lfix(dot)co(dot)uk>
To: "Paulo Roberto Siqueira" <paulo(dot)siqueira(at)usa(dot)net>
Cc: "PGSQL SQL" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: CREATE TABLE with foreign key and primary key
Date: 2000-07-10 09:16:30
Message-ID: 200007100916.e6A9GUc12505@linda.lfix.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

"Paulo Roberto Siqueira" wrote:
>ufgvirtual=# create table matricula (
>ufgvirtual(# id_aluno char(15) references pessoa,
>ufgvirtual(# id_curso int4 references curso_polo,
>ufgvirtual(# id_polo int2 references curso_polo,
>ufgvirtual(# local_prova varchar(50) not null,
>ufgvirtual(# autorizado bool default 'f' not null,
>ufgvirtual(# id_plano_pgto int2 references plano_pgto not null,
>ufgvirtual(# data_matricula date default CURRENT_DATE not null,
>ufgvirtual(# primary key(id_aluno,id_curso,id_polo));

...

>I have tables pessoa, curso, polo, curso_polo and matricula. Primary key in
>curso_polo are id_curso (references curso) and id_polo (references polo). In
>table matricula I want as primary key id_pessoa (references pessoa),
>id_curso (references curso_polo) and id_polo (references curso_polo).

You can't use REFERENCES on a column if the target primary key is made
up of more than one column; you have to use a FOREIGN KEY table
constraint:

create table matricula (
id_aluno char(15) references pessoa,
id_curso int4 not null, -- I assume you want
id_polo int2 not null, -- not null here
local_prova varchar(50) not null,
autorizado bool default 'f' not null,
id_plano_pgto int2 references plano_pgto not null,
data_matricula date default CURRENT_DATE not null,
primary key(id_aluno,id_curso,id_polo),
FOREIGN KEY (id_curso, id_polo
REFERENCES curso_polo (id_curso,id_polo));

--
Oliver Elphick Oliver(dot)Elphick(at)lfix(dot)co(dot)uk
Isle of Wight http://www.lfix.co.uk/oliver
PGP: 1024R/32B8FAA1: 97 EA 1D 47 72 3F 28 47 6B 7E 39 CC 56 E4 C1 47
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Delight thyself also in the LORD; and he shall give
thee the desires of thine heart."
Psalms 37:4

Browse pgsql-sql by date

  From Date Subject
Next Message Holger Klawitter 2000-07-10 09:36:19 Re: Counting affected rows
Previous Message sandis 2000-07-10 08:52:16 Re: date comparision ???