嗨,我对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`));
答案 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;