2011-08-08 15 views
8

È questo sintassi corretta nella creazione di una chiave esterna?sintassi MySQL nella creazione di chiave esterna

create table department 
(
    departmentID int not null auto_increment primary key, 
    name varchar(30) 
) type=InnoDB; 

create table employee 
(
    employeeID int not null auto_increment primary key, 
    name varchar(80), 
    job varchar(30), 
    departmentID int not null references department(departmentID) 
) type=InnoDB; 
+0

Perché non basta provare? mysql è migliore nel controllo della sintassi di ogni persona qui – zerkms

+3

@zerkms Im chiedendo questo perché ho un eBook che dimostra che questo è il modo giusto di creare la chiave esterna - contrario di quello che ** ** Doug detto _It assomiglia MySQL lo accetta (non lamentarsi la sintassi), ma la chiave esterna non è effettivamente created._ Questo non è il modo in cui il mio istruttore mi ha insegnato. Ecco perché ho provato a verificare se questa via è accettabile. – aer

risposta

15

Sembra MySQL lo accetta (non lamentarsi la sintassi), ma la chiave esterna, non è in realtà creato.

per creare questa chiave esterna, eseguire questo comando:

ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) REFERENCES department (departmentID); 
+0

E la spiegazione del mio ebook sulla creazione di una chiave esterna. _ "C'è solo un nuovo pezzo di sintassi in questa informativa. L'ultima colonna della tabella dei dipendenti è l'id del dipartimento per la quale i dipendenti lavorano. Si tratta di una chiave esterna. Noi dichiariamo questo nella definizione della tabella aggiungendo il clausola di riferimenti come segue: IDdipartimento int non nullo reparto riferimenti (IDdipartimento) Questo ci dice che l'IDdipartimento nella tabella dipendente deve fare riferimento alla colonna IDdipartimento nella tabella dipartimento "_ Cosa si può dire su. vero? – aer

+0

Questa è la spiegazione per i codici che ho fornito. – aer

+2

Ho provato il codice da solo e la tabella è stata creata con il codice, ma l'integrità referenziale non è stata applicata fino a quando non ho creato la chiave esterna separatamente, con il codice che ho fornito nella risposta. – Doug

2
create table employee 
(
    employeeID int not null auto_increment primary key, 
    name varchar(80), 
    job varchar(30), 
    departmentID int not null ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) references department(departmentID) 
) 
+4

Benvenuto! perché questa risposta è migliore di quella accettata dopo 2 anni? –

1
FOREIGN KEY (departmentID) REFERENCES department(departmentID) 

Grazie.!

Problemi correlati