mysql - 我一直收到 SQL 语法错误,我不知道为什么

标签 mysql sql foreign-keys syntax-error primary-key

这是我的代码:

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

每当我尝试构建模式时:

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

您在 formula VARCHAR(100) 之后漏掉了一个逗号

关于mysql - 我一直收到 SQL 语法错误,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393635/

相关文章:

mysql - 为不同用户选择结果

android - 如何在我的应用程序中组织 SQLite 数据库

mysql - 复合主键之一作为外键 Mysql

sql - 在 MySQL 中重命名外键列

mysql - 在一个表中使用 2 个外键是否可以,其中一个必须为空?

mysql - 为什么 Mysql 给我错误 1280 "Wrong Index"

python - 导入 MySQLdb 错误

mysql - 存在则更新,不存在则插入

PHP 查询不输出到表中

sql - 在 sqlite3 中构造复杂 sql 查询的最佳方法是什么