2017-11-20 6 views
1

Hier ist mein Code:I Keep eine SQL-Syntax Error bekommen, und ich weiß nicht, warum

CREATE TABLE Doctor (
    ssn CHAR(11) PRIMARY KEY, 
    name CHAR(30), 
    specialty CHAR(30), 
    yearsOfExperience INTEGER 
); 

CREATE TABLE Pharmacy (
    pharm_id CHAR(11) PRIMARY KEY, 
    name CHAR(30), 
    address CHAR(30), 
    phone INTEGER 
); 

CREATE TABLE Pharm_co (
    name CHAR(30) PRIMARY KEY, 
    phone INTEGER 
); 

CREATE TABLE Pri_Phy_Patient (
    ssn CHAR(11) PRIMARY KEY, 
    name CHAR(20), 
    age INTEGER, 
    address CHAR(20), 
    phy_ssn CHAR(11), 
    FOREIGN KEY (phy_ssn) REFERENCES Doctor(ssn) 
); 

CREATE TABLE Make_Drug (
    trade_name CHAR(20) PRIMARY KEY, 
    pharm_co_name CHAR(30) PRIMARY KEY, 
    formula VARCHAR(100) 
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name) 
); 

CREATE TABLE Prescription ( 
    pre_id NUMBER(10) PRIMARY KEY, 
    status CHAR(20), -- canceled/ready/pending/completed 
    drop_off_time TIMESTAMP, 
    pick_up_time TIMESTAMP, 
    ssn CHAR(11), -- patient’s ssn 
    phy_ssn CHAR(11), 
    pre_date CHAR(11), 
    quantity INTEGER, 
    trade_name CHAR(20), 
    name CHAR(11), 
    pharm_co_name CHAR(30), 
    FOREIGN KEY (ssn) REFERENCES Pri_Phy_Patient(ssn), 
    FOREIGN KEY (phy_ssn) REFERENCES Doctor(ssn), 
    FOREIGN KEY (trade_name) REFERENCES Make_Drug(trade_name), 
    FOREIGN KEY (pharm_co_name) REFERENCES Make_Drug(pharm_co_name) 
); 

CREATE TABLE Contract (
    pharm_id CHAR(11) PRIMARY KEY, 
    start_date CHAR(11), 
    end_date CHAR(11), 
    text VARCHAR(4000), 
    supervisor CHAR(20), 
    pharm_co_name CHAR(30) PRIMARY KEY,, 
    FOREIGN KEY (pharm_id) REFERENCES Pharmacy(pharm_id), 
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name) 
); 

Jedes Mal, wenn ich versuche, das Schema zu erstellen:

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 'FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name))' at line 5 

Ich bin nicht sicher, warum es gibt mir immer wieder Syntaxfehler. Ich bin mir ziemlich sicher, dass dies die korrekte Syntax für den Fremdschlüssel ist. Was muss ich tun, um das Problem zu beheben? Ich habe versucht, Dinge zu ändern, aber ich kann es nicht zur Arbeit bringen.

+2

Überprüfen Sie Ihre Kommas (','). –

+1

fehlt comman vor 'FREMDSCHLÜSSEL (pharm_co_name) – scaisEdge

+1

Fügen Sie Tag mit Ihrem DBMS hinzu –

Antwort

0

Sie haben ein Komma verpasst. machen es richtig AS-

CREATE TABLE Make_Drug (
    trade_name CHAR(20) PRIMARY KEY, 
    pharm_co_name CHAR(30) PRIMARY KEY, 
    formula VARCHAR(100), <-- add this comma 
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name) 
); 
1

In dieser Erklärung:

CREATE TABLE Make_Drug (
    trade_name CHAR(20) PRIMARY KEY, 
    pharm_co_name CHAR(30) PRIMARY KEY, 
    formula VARCHAR(100) <-- missing comma 
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name) 
); 

Sie formula VARCHAR(100) ein Komma nach

0

verpasst haben, können Sie nicht zwei Spalten als Primärschlüssel deklarieren, Inline. Versuchen Sie dies:

CREATE TABLE Make_Drug (
    trade_name CHAR(20), 
    pharm_co_name CHAR(30), 
    formula VARCHAR(100), 
    PRIMARY KEY (trade_name, pharm_co_name), 
    FOREIGN KEY (pharm_co_name) REFERENCES Pharm_co(name) 
); 

Dies behebt auch das fehlende Komma.

+0

Ich wusste nicht, dass ich zwei Primärschlüssel nicht inline deklarieren konnte. Danke dafür! – doy

+0

@doy. . . Eine Tabelle kann nur einen Primärschlüssel haben. Sie scheinen einen * zusammengesetzten * Primärschlüssel zu wollen. –

Verwandte Themen