不确定为什么发生此语法错误

时间:2018-10-12 17:19:38

标签: mysql mariadb

嗨,我对MySQL不太熟悉,因为我今天才开始使用它,并且一直收到此语法错误,并且不确定是否出了问题。我已经附加了screenshot的代码,并将其粘贴到下面,并以粗体显示了错误。

很抱歉,如果这是一个很容易解决的愚蠢错误,我不确定如何解决它,并且非常感谢您的帮助。

CREATE TABLE copy (
    `code` INT NOT NULL,
    isbn CHAR(17) NOT NULL,
    duration TINYINT NOT NULL,
    CONSTRAINT pkcopy  PRIMARY KEY (isbn, `code`),
    CONSTRAINT fkcopy FOREIGN KEY (isbn) REFERENCES book (isbn));

CREATE TABLE student (
    `no` INT NOT NULL,
    `name` VARCHAR(30) NOT NULL,
    school CHAR(3) NOT NULL,
    embargo BIT NOT NULL,
    CONSTRAINT pkstudent PRIMARY KEY (`no`));

CREATE TABLE loan (
    `code` INT NOT NULL,
    `no` INT NOT NULL,
    taken DATE NOT NULL,
    due DATE NOT NULL,
    `return` DATE NULL,
    CONSTRAINT pkloan PRIMARY KEY (taken, `code`, `no`),
    CONSTRAINT fkloan FOREIGN KEY (`code`, `no`) REFERENCES copy, student **(**`code`, `no`));

1 个答案:

答案 0 :(得分:0)

首先创建表,然后使用ALTER TABLE语句逐一添加外键。您将无法在外键上调用两个不同的表,因此您必须使用映射到两个表的ID。这是在表创建后添加外键的示例:

添加一个名为vendor的新表,并将products表更改为包含vendor id字段:

USE dbdemo;

CREATE TABLE vendors(
    vdr_id int not null auto_increment primary key,
    vdr_name varchar(255)
)ENGINE=InnoDB;

ALTER TABLE products 
ADD COLUMN vdr_id int not null AFTER cat_id;

要将外键添加到产品表,请使用以下语句:

ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;