doy
doy

Reputation: 11

I Keep Getting an SQL Syntax Error and I don't know why

Here is my code:

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)
);

Whenever I try to build the schema:

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

I'm not sure why it keeps giving me syntax errors. I'm pretty sure this is the correct syntax for the foreign key. What should I do to fix the issue? I tried changing stuff around but I can't seem to get it to work.

Upvotes: 1

Views: 88

Answers (3)

Gordon Linoff
Gordon Linoff

Reputation: 1269623

You cannot declare two columns as the primary key, inline. Try this:

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)
);

This also fixes the missing comma.

Upvotes: 0

Joe Taras
Joe Taras

Reputation: 15379

In this statement:

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)
);

You have missed a comma after formula VARCHAR(100)

Upvotes: 1

Tushar Walzade
Tushar Walzade

Reputation: 3809

You've missed a comma. make it right 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)
);

Upvotes: 0

Related Questions