2017-11-20 16 views
1
ここ

が私のコードである私はなぜ知らない:私は、SQL構文エラーを得続けると

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 

私がなぜわからない:私は、スキーマを構築しようとするたびに

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

それは私に構文エラーを与え続けます。私はこれが外部キーの正しい構文だと確信しています。問題を解決するにはどうすればよいですか?私は周りのものを変更しようとしたが、私はそれを動作させるように見えることはできません。

+2

カンマ( '、')を確認してください。 –

+1

'FOREIGN KEY(pharm_co_name)の前にCOMMANがありません – scaisEdge

+1

DBMSにタグを追加してください –

答えて

0

あなたはコンマが見つかりませんでした。この文では、右

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

AS-それを作る:

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

あなたは主キー、インラインとして2つの列を宣言することはできませんformula VARCHAR(100)

0

の後にコンマを逃しました。これを試してください:

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

これはまた、欠落しているカンマを修正します。

+0

私は2つの主キーをインラインで宣言できなかったことに気づいていませんでした。ありがとう! – doy

+0

@doy。 。 。表には主キーが1つしかありません。 *コンポジット*プライマリキーが必要なようです。 –