2016-04-26 12 views
-1
CREATE TABLE EMP_1 (
    EMP_NUM varchar(3), 
    EMP_LNAME varchar(15), 
    EMP_FNAME varchar(15), 
    EMP_INITIAL varchar(1), 
    EMP_HIREDATE datetime, 
    JOB_CODE varchar(3), FOREIGN KEY (JOB_CODE) REFERENCES JOB 
); 

Dies ist der Code, mit dem eine Tabelle erstellt wird, die eine Teilmenge einer anderen Tabelle darstellt. Es ist Teil einer Übung.Warum erhalte ich den MySQL-Fehler 1064 bei Fremdschlüssel-Constraint?

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; das Handbuch überprüfen, die für die richtige Syntax zu verwenden in der Nähe von ‚Informationsquellen JOB)‘ in Zeile 8

Ist die Fehlermeldung, die Ausgabe in phpMyAdmin auf Ihre MySQL-Server-Version entspricht, wenn die Abfrage ausgeführt wird.

Wo ist die Syntax in Zeile 8? Nachdem ich die W3-Schulen und das Lehrbuch überprüft habe, kann ich das Problem nicht sehen.

Antwort

3

Sie die Referenzierung Fremdschlüsselspalte auf der JOB Tabelle sind vermisst

so sollte es so etwas wie

FOREIGN KEY (JOB_CODE) REFERENCES JOB(job_code_col) 

so sein, wenn Ihr JOB Tabelle auch eine Spalte JOB_CODE hat genannt, dann die DDL würde sehe so aus:

CREATE TABLE EMP_1 (
    EMP_NUM varchar(3), 
    EMP_LNAME varchar(15), 
    EMP_FNAME varchar(15), 
    EMP_INITIAL varchar(1), 
    EMP_HIREDATE datetime, 
    JOB_CODE varchar(3), FOREIGN KEY (JOB_CODE) REFERENCES JOB (JOB_CODE) 
); 
+0

Ich habe die Spalte JOB_CODE in der Job-Tabelle. Muss es zuerst als Fremdschlüssel in der Job-Tabelle festgelegt werden, bevor die Abfrage ausgeführt werden kann? Ich folge dir nicht vollständig. – mango762

+1

müssen Sie den Namen dieser Spalte in Klammern nach dem Tabellennamen hinzufügen, sehen Sie sich meine Antwort an, wo ich '(job_code_col)', das sollte der Name der Spalte in der 'JOB' Tabelle sein –

+0

@ mango762, ich aktualisiert meine Antwort explizit, da Sie sagten, Sie haben eine 'JOB_CODE' Spalte in der' JOB' Tabelle –

Verwandte Themen