我有以下表格:
CREATE TABLE IF NOT NOT EXISTS
books
(
book_id
varchar(50)NOT NULL,
book_title
varchar(50)NOT NULL,
courseid
varchar(50)NOT NULL,FOREIGN KEY('courseid')REFERENCES'course'('course_id')ON DELETE CASCADE
)ENGINE = InnoDB DEFAULT CHARSET = latin1;
CREATE TABLE IF NOT NOT EXISTS
course
(
course_id
varchar(50)NOT NULL,
year
varchar(50)NOT NULL,
section
varchar(50)NOT NULL,PRIMARY KEY(
course_id
))ENGINE = InnoDB DEFAULT CHARSET = latin1;
我想在courseid(在books表下)引用一个外键引用course_id(在课程表下),但是收到以下错误信息:
**#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在''courseid'附近使用正确的语法) REFERENCES'course'('course_id')
)ENGINE = InnoDB DEFAULT CHARS'在第15行**
我厌倦了几种声明外键的语法(使用CONSTRAINT FOREIGN KEY,有/没有引号等),但没有效果。
我正在使用Xamp WITH Server版本:5.5.32 - MySQL社区服务器(GPL)。
有人可以帮我解决这个问题吗?
由于
答案 0 :(得分:2)
使用back-ticks`而不是单引号也首先创建课程表然后创建books表,以便books表能够指向课程表
CREATE TABLE IF NOT EXISTS course (
course_id VARCHAR (50) NOT NULL,
YEAR VARCHAR (50) NOT NULL,
section VARCHAR (50) NOT NULL,
PRIMARY KEY (course_id)
) ENGINE = INNODB DEFAULT CHARSET = latin1 ;
CREATE TABLE IF NOT EXISTS books (
book_id VARCHAR (50) NOT NULL,
book_title VARCHAR (50) NOT NULL,
courseid VARCHAR (50) NOT NULL,
FOREIGN KEY (`courseid`) REFERENCES `course` (`course_id`) ON DELETE CASCADE
) ENGINE = INNODB DEFAULT CHARSET = latin1 ;
答案 1 :(得分:0)
简单地说:
您的代码:
FOREIGN KEY ('courseid') REFERENCES 'course'('course_id') ON DELETE CASCADE
更改:强>
FOREIGN KEY (`courseid`) REFERENCES `course` (`course_id`) ON DELETE CASCADE
你必须创建主键表当然(course_id)然后才应该创建参考外键表书籍(courseid) 。