Newsgroup: it.comp.software.database
Titolo: Errore chiave esterna

Salve ragazzi, ho un problema con Postgresql, non mi fa inserire più di una
volta, la stessa chiave esterna, mi spiego meglio mettendo il mio database
in questione.
create table artista
(id_artista integer not null,
nome varchar (14) not null,
cognome varchar (14) not null,
nascita date,
primary key (id_artista));
create table museo
(id_museo integer not null,
nome varchar (15),
n_dipendenti integer,
localita varchar (12) not null,
primary key (id_museo));
create table opera
(id_opera integer not null,
nome varchar (15) not null,
costo float,
n_autore integer not null,
n_museo integer not null,
primary key (id_opera),
constraint composta foreign key (n_autore) references artista on delete
cascade,
constraint appartine foreign key (n_museo) references museo on delete
cascade);
insert into artista
(id_artista, nome, cognome, nascita)
values (1, 'Franco', 'Franchi', '07/05/1934');
insert into artista
(id_artista, nome, cognome, nascita)
values (2, 'Ciccio', 'Ingrassia', '06/07/1932');
insert into artista
(id_artista, nome, cognome, nascita)
values (3, 'Leonardo', 'Da Vinci', '05/08/1834');
insert into artista
(id_artista, nome, cognome, nascita)
values (4, 'Mario', 'Neri', '05/02/1939');
insert into artista
(id_artista, nome, cognome, nascita)
values (5, 'Bianco', 'Bianchi', '07/01/1967');
insert into artista
(id_artista, nome, cognome, nascita)
values (6, 'Ermanno', 'Fraschi', '09/09/1965');
insert into museo
(id_museo, nome, n_dipendenti, localita)
values (1, 'Arcispolo', 23, 'Firenze');
insert into museo
(id_museo, nome, n_dipendenti, localita)
values (2, 'Tuzzettu', 90, 'Livorno');
insert into museo
(id_museo, nome, n_dipendenti, localita)
values (3, 'La Meraviglia', 56, 'Milano');
insert into museo
(id_museo, nome, n_dipendenti, localita)
values (4, 'I quattro venti', 34, 'Torino');
insert into museo
(id_museo, nome, n_dipendenti, localita)
values (5, 'La Maestà', 23, 'Torino');
insert into museo
(id_museo, nome, n_dipendenti, localita)
values (6, 'Il Franco', 12, 'Roma');
insert into opera
(id_opera, nome, costo, n_autore, n_museo)
values(1, 'Il Teschio', 23000.90, 1, 1);
insert into opera
(id_opera, nome, costo, n_autore, n_museo)
values(1, 'La Verità', 34000.34, 1, 3);
insert into opera
(id_opera, nome, costo, n_autore, n_museo)
values(2, 'Il Nano', 56000.00, 2, 5);
insert into opera
(id_opera, nome, costo, n_autore, n_museo)
values(2, 'Il Caimano', 100000.00, 3, 6);
insert into opera
(id_opera, nome, costo, n_autore, n_museo)
values(3, 'Mejo me sento', 90986.11, 5, 4);
insert into opera
(id_opera, nome, costo, n_autore, n_museo)
values(4, 'La Gioconda', 100000.09, 3, 2);
Questi sono gli errori che mi segnala Postgresql
psql:opere_arte.sql:68: ERROR:  Cannot insert a duplicate key into unique
index opera_pkey
INSERT 18287 1
psql:opere_arte.sql:74: ERROR:  Cannot insert a duplicate key into unique
index opera_pkey
In pratica nella tabella opera, un autore non può aver composto più di una
opera e questo è molto strano, visto che il campo n_autore nella tabella
opera è una chiave esterna e non primaria, quindi perchè non potrei
inserire la stessa chiave esterna più di una volta? Grazie a chi vorrà
aiutarmi :-)
-- 
ICQ # 84624356

 Grazie a chi vorrà aiutarmi :-)
Prego.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org

Lorenzo Benaglia wrote:

Oddio io mi ero fissato a controllare la chiave esterna, quando non mi sono
accorto di aver messo più di una volta la stessa chiave primaria, alla
prima lezione ti dicono che la chiave primaria, è appunto primaria, perchè
è una valore univoco che contraddistingue ogni tupla, se faccio un errore
del genere alla maturità, mi rimandano in primo superiore :-O
-- 
ICQ # 84624356