SQL - inserire chiave esterna

4 risposte [Ultimo messaggio]
Ritratto di valerio matrix
valerio matrix
(Junior)
Offline
Junior
Iscritto: 19/04/2012
Messaggi: 13

Ciao,
Sto cercando di creare un DB da terminale ma sono arrivato al punto di inserire le chiavi esterne.. mi da sempre errore. Vi posto quello che digito insieme all'errore:

mysql> CREATE TABLE dati_aziendali (
    -> id_dati_az int (3) auto_increment,
    -> data_assunzione date,
    -> inizio_affincamento date,
    -> fine affiancamento date,
    -> tutor varchar (35),
    -> id_mans int (3),
    -> id_comp int (3),
    -> id_contrat int (3),
    -> id_dati_an int (3),
    -> FOREIGN KEY (id_mans) REFERENCES mansione (id_mans),
    -> FOREIGN KEY (id_comp) REFERENCES liv_competenza (id_comp),
    -> FOREIGN KEY (id_contrat) REFERENCES tipo_contratto (id_contrat),
    -> FOREIGN KEY (id_dati_an) REFERENCES dati_anagrafici (id_dati_an),
    -> PRIMARY KEY (id_dati_az)
    -> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'affiancamento date,
tutor varchar (35),
id_mans int (3),
id_comp int (3),
id_con' at line 5
mysql> 

Ritratto di max.riservo
max.riservo
(Geek)
Offline
Geek
Iscritto: 04/02/2012
Messaggi: 167

Io comincerei con ingrandire i campi int che usi per le chiavi e passerei da int(3) a int(10).
Poi proverei anche a creare la tabella senza i foregn key : se non ci sono errori risulta evidente che il problema sono le foreign key (vado a memoria - le foreign keys mi sembra che le puoi gestire solo con InnoDb e non con MyIsam - ma potrei anche ricordarmi male -> leggi il manuale di MySql).
Se non lo hai ancora fatto, scaricati il workbench di mysql così puoi lavorare in ambiente grafico .....

A volte sono presente anche in altri forum di programmazione ....

Ritratto di valerio matrix
valerio matrix
(Junior)
Offline
Junior
Iscritto: 19/04/2012
Messaggi: 13

si, si possono usare solo con innoDB ed è quello che utilizzo. Utilizzo il terminale solo a scopo educativo, altrimenti di solito utilizzo phpmyadmin. Secondo te come faccio a creare una chiave secondaria e metterla dove mi serve?

Grazie...

Ritratto di mauriziod
mauriziod
(Guru)
Offline
Guru
Iscritto: 01/06/2009
Messaggi: 1687

Bug alla riga 5

 fine affiancamento date,
 

Invece del corretto

  fine_affiancamento date,

Rolling On The Floor

Nota : Non prendertela, io faccio errori ancora più scemi!

SO: Linux desktop Sistema: OpenSUSE Leap 15.1 (64bit) KDEE 5.12
SO: Linux desktop Sistema: OpenSUSE Tumbleweed (64bit) KDE 5
Miao

Ritratto di valerio matrix
valerio matrix
(Junior)
Offline
Junior
Iscritto: 19/04/2012
Messaggi: 13

Porca miseria, ho perso un pomeriggio a cdercare una soluzione per la chiave secondaria e invece era una cavolata..
mauriziod, grazie Big Grin