7 messaggi dal 08 aprile 2009
Salve a tutti....sono nuovo del forum...e soprattutto sono alle prime armi con sql....Stavo preparando un progettino per l'uni..Si tratta dell'organizzazione di un negozio di cd.....ma insorgono dei problemi nella creazione della tabella "Copie"...nn riesco a capire il motivo.....vi posto il codice:

create table album
( cd varchar (20) not null,
autore varchar (20) not null,
titolo varchar (30) not null,
anno_pubblicazione numeric (4),
cod_casa_discografica numeric(18),
constraint pk_album primary key (cd),
constraint fk_album_casa_discografica foreign key (cod_casa_discografica) references casa_discografica ( cod_casa_discografica)
);

create table casa_discografica
( cod_casa_discografica numeric (18) not null,
nome varchar (50),
citta varchar(50),
nazione varchar (50),
constraint pk_casa_discografica primary key( cod_casa_discografica)
);


create table autore
( cod_autore numeric(18) not null,
nome varchar (50) not null,
cognome varchar (50) not null,
nome_arte varchar(50) not null,
constraint pk_autore primary key (cod_autore)
);


create table composizione
( cod_autore numeric(18),
cd varchar (20),
constraint pk_composizione primary key (cod_autore, cd),
constraint fk_composizione_album foreign key (cd) references album(cd),
constraint fk_composizione_autore foreign key (cod_autore) references autore (cod_autore)
);

create table scaffale
(cod_scaffale numeric (20),
piano numeric (20),
stanza numeric(4),
constraint pk_scaffale primary key (cod_scaffale)
);

create table copie
( cod_copia smallint (20),
cd varchar (20) not null,
data_vendita date,
prezzo numeric (10),
cod_fornitore numeric(18),
disponibilita char(1) default 's' not null,
cod_scaffale numeric(20) not null,
constraint pk_copie primary key (cod_copia),
constraint fk_copie_album foreign key (cd) references album (cd),
constraint fk_copie_scaffale foreign key (cod_scaffale) references scaffale (cod_scaffale),
constraint fk_copie_fornitore foreign key (cod_fornitore) references fornitori(cod_fornitore),
constraint ck_copie_disponibilita check (disponibilita in ('s','n'))
);

create table fornitori
( cod_fornitore numeric(20) not null,
indirizzo varchar (50) not null,
telefono varchar (20) not null,
p_iva varchar (20)not null
);


vi riporto anche l'errore:
l risultato dell'interrogazione con 0 righe verrà restituito.

ERROR: syntax error at or near "smallint"
LINE 2: ( cod_copia smallint (20),
^


********** Errore **********

ERROR: syntax error at or near "smallint"
Stato SQL: 42601
Carattere: 40

Non so' piu' cosa inventarmi.....aiutatemi.... dimenticavo di aggiungere che uso postgres sql...Grazie per la gentile attenzione a tutti!
Ciao Francesco
843 messaggi dal 08 aprile 2009
Ai campi di tipo smallint non devi specificare la lunghezza:

cod_copia smallint ,


Ciao
7 messaggi dal 08 aprile 2009
ciao...grazie per il suggerimento datomi....ho modificato il codice nella seguente maniera:
[create table album
( cd varchar (20) not null,
autore varchar (20) not null,
titolo varchar (30) not null,
anno_pubblicazione numeric (4),
cod_casa_discografica numeric(18),
constraint pk_album primary key (cd),
constraint fk_album_casa_discografica foreign key (cod_casa_discografica) references casa_discografica ( cod_casa_discografica)
);

create table casa_discografica
( cod_casa_discografica numeric (18) not null,
nome varchar (50),
citta varchar(50),
nazione varchar (50),
constraint pk_casa_discografica primary key( cod_casa_discografica)
);


create table autore
( cod_autore numeric(18) not null,
nome varchar (50) not null,
cognome varchar (50) not null,
nome_arte varchar(50) not null,
constraint pk_autore primary key (cod_autore)
);


create table composizione
( cod_autore numeric(18),
cd varchar (20),
constraint pk_composizione primary key (cod_autore, cd),
constraint fk_composizione_album foreign key (cd) references album(cd),
constraint fk_composizione_autore foreign key (cod_autore) references autore (cod_autore)
);

create table scaffale
(cod_scaffale numeric (20),
piano numeric (20),
stanza numeric(4),
constraint pk_scaffale primary key (cod_scaffale)
);

create table copia
( cod_copia numeric (20),
cd varchar (20) not null,
data_vendita date,
prezzo numeric (10),
cod_fornitore numeric(18),
disponibilita char(1) default 's' not null,
cod_scaffale numeric(20) not null,
constraint pk_copia primary key (cod_copia),
constraint fk_copia_album foreign key (cd) references album (cd),
constraint fk_copia_scaffale foreign key (cod_scaffale) references scaffale (cod_scaffale),
constraint fk_copia_fornitore foreign key (cod_fornitore) references fornitori(cod_fornitore),
constraint ck_copia_disponibilita check (disponibilita in ('s','n'))
);

create table fornitori
( cod_fornitore numeric(20) not null,
indirizzo varchar (50) not null,
telefono varchar (20) not null,
p_iva varchar (20)not null,
constraint pk_fornitori primary key (cod_fornitore)
);
]

ora l'errore dovuto al smallint non viene piu' visualizzato.....ma purtroppo ne viene fuori uno tutto nuovo!!! lo riporto in seguito:

ERROR: relation "album" already exists


********** Errore **********

ERROR: relation "album" already exists
Stato SQL: 42P07

non riesco a capire dove sia il problema.....io sto' utilizzando postgresql...e la tabella "copia" non viene mai visualizzata.....aiutatemi.....grazie mille della vostra attenzione.
saluti a tutti...
843 messaggi dal 08 aprile 2009
Ciao.
Non conosco postgresql ma è anche possibile che eseguendo più volte il comando alcune tabelle/relazioni le abbia già create.
Negli script di creazione DDL ti conviene sempre eseguire le operazioni di DROP con la clausola se esistono le tabelle.
Inoltre ho trovato degli altri errori come ad esempio il cod_fornitore una volta è numeric(20) e un'altra volta è numeric(18). Errori che SQL Server riscontra.

Buon lavoro
7 messaggi dal 08 aprile 2009
....grazie per il consiglio.....ho aggiunto i drop, e modificato i valori in modo da risultare tutti uguali......sono davvero una frana.....ho ancora problemi sulla tabella "copia"....mi viene visualizzato, una volta lanciato , il seguente errore:


ERROR: table "copia" does not exist


********** Errore **********

ERROR: table "copia" does not exist
Stato SQL: 42P01

non so' piu' dove mettere le mani..........help......grzie ancora per le dritte datemi in precedenza!
843 messaggi dal 08 aprile 2009
puoi ripostare il codice che hai creato?

Se hai messo le DROP senza IF Exist è probabile che la table COPIA non esiste e quindi non la può cancellare.
7 messaggi dal 08 aprile 2009
ciao ti riporto il codice:

drop table composizione if exist;
drop table scaffale if exist;
drop table copia if exist;
drop table fornitori if exist;

create table album
( cd varchar (20) not null,
autore varchar (20) not null,
titolo varchar (20) not null,
anno_pubblicazione numeric (4),
cod_casa_discografica numeric(20),
constraint pk_album primary key (cd),
constraint fk_album_casa_discografica foreign key (cod_casa_discografica) references casa_discografica ( cod_casa_discografica)
);

create table casa_discografica
( cod_casa_discografica numeric (18) not null,
nome varchar (20),
citta varchar(20),
nazione varchar (20),
constraint pk_casa_discografica primary key( cod_casa_discografica)
);


create table autore
( cod_autore numeric(20) not null,
nome varchar (20) not null,
cognome varchar (20) not null,
nome_arte varchar(20) not null,
constraint pk_autore primary key (cod_autore)
);


create table composizione
( cod_autore numeric(20) not null,
cd varchar (20) not null,
constraint pk_composizione primary key (cod_autore, cd),
constraint fk_composizione_album foreign key (cd) references album(cd),
constraint fk_composizione_autore foreign key (cod_autore) references autore (cod_autore)
);

create table scaffale
(cod_scaffale numeric (20),
piano numeric (20),
stanza numeric(3),
constraint pk_scaffale primary key (cod_scaffale)
);

create table copia
( cod_copia numeric (20),
cd varchar (20) not null,
data_vendita date,
prezzo numeric (10),
cod_fornitore numeric(20),
disponibilita char(1) default 's' not null,
cod_scaffale numeric(20) not null,
constraint pk_copia primary key (cod_copia),
constraint fk_copia_album foreign key (cd) references album (cd),
constraint fk_copia_scaffale foreign key (cod_scaffale) references scaffale (cod_scaffale),
constraint fk_copia_fornitore foreign key (cod_fornitore) references fornitori(cod_fornitore),
constraint ck_copia_disponibilita check (disponibilita in ('s','n'))
);

create table fornitori
( cod_fornitore numeric(20) not null,
indirizzo varchar (20) not null,
telefono varchar (20) not null,
p_iva varchar (20)not null,
constraint pk_fornitori primary key (cod_fornitore)
);



grazie mille per l'interessamento...sei davvero gentile.
843 messaggi dal 08 aprile 2009
Guarda non conosco postgresql però ti posso consigliare di togliere solo la drop di copia con la relativa create.
Creare il db così e se non ci sono altri errori lavorare solo sulla creazione di copia.

Comunque leggendo qualche forum sul web sembra che prostgresql abbia dei problemi con la DROP IF EXIST.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.