我的表创建中的 CONSTRAINT 语句
Posted
技术标签:
【中文标题】我的表创建中的 CONSTRAINT 语句【英文标题】:CONSTRAINT statements in my table creations 【发布时间】:2017-11-26 20:52:06 【问题描述】:我正在为我的表创建中的这些 CONSTRAINT 语句寻求一些帮助。它看起来很简单,但由于某种原因我错过了它。当我尝试更改以在语句的不同区域添加左括号或右括号时,似乎没有任何变化。
错误代码:1064。您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 15 行的“REFERENCES (DISTRIBUTOR.DISTRIBUTOR_ID), CONSTRAINT VIDEO_DVD_FK2 FOREIGN KEY R”附近使用正确的语法
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“CONSTRAINT DISTRIBUTOR_PK PRIMARY KEY (DISTRIBUTOR_ID), CONSTRAINT DISTRIBUTOR_”附近使用正确的语法
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 25 行的“REFERENCES (DISTRIBUTOR.DISTRIBUTOR_ID))”附近使用正确的语法
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“REFERENCES (VIDEO_DVD.VIDEO_DVD_ID))”附近使用正确的语法
CREATE TABLE VIDEO_DVD(
VIDEO_DVD_ID VARCHAR(100),
DISTRIBUTOR_ID varchar(100),
MOVIE_ID varchar(100),
CUSTOMER_ID varchar(100),
FINE_AMT numeric(14,0) CHECK (FINE_AMT > 0),
DAMAGE_CHARGES numeric(14,0) CHECK (DAMAGE_CHARGES > 0),
TYPE CHAR(1) check(TYPE IN ('V','D')),
LEASE_DATE DATE,
RETURN_DATE DATE NOT NULL,
CONSTRAINT VIDEO_DVD_PK PRIMARY KEY (VIDEO_DVD_ID),
CONSTRAINT VIDEO_DVD_FK1 FOREIGN KEY REFERENCES (DISTRIBUTOR.DISTRIBUTOR_ID),
CONSTRAINT VIDEO_DVD_FK2 FOREIGN KEY REFERENCES (MOVIE.MOVIE_ID),
CONSTRAINT VIDEO_DVD_FK3 FOREIGN KEY REFERENCES (CUSTOMER.CUST_ID));
CREATE TABLE DISTRIBUTOR(
DISTRIBUTOR_ID VARCHAR(100) ,
MOVIE_ID VARCHAR(100),
VIDEO_DVD_ID VARCHAR(100),
NAME VARCHAR(1000) UNIQUE NOT NULL
CONSTRAINT DISTRIBUTOR_PK PRIMARY KEY (DISTRIBUTOR_ID),
CONSTRAINT DISTRIBUTOR_FK1 FOREIGN KEY REFERENCES (MOVIE.MOVIE_ID),
CONSTRAINT DISTRIBUTOR_FK2 FOREIGN KEY REFERENCES (VIDEO_DVD.VIDEO_DVD_ID));
CREATE TABLE MOVIE(
MOVIE_ID VARCHAR(100),
DIRECTOR VARCHAR(100) NOT NULL,
NAME VARCHAR(100) UNIQUE NOT NULL,
TYPE CHAR(1) CHECK (TYPE IN ('C','H','S')),
DISTRIBUTOR_ID VARCHAR(100),
ACTOR_NAME VARCHAR(100),
LENGTH NUMERIC(14,0) CHECK (LENGTH > 0),
AWARDS VARCHAR(1000),
RATINGS NUMERIC(2,0) CHECK (RATINGS IN (1,2,3,4,5,6,7,8,9,10)),
RELEASE_YEAR NUMERIC(4,0),
CONSTRAINT MOVIE_PK PRIMARY KEY (MOVIE_ID),
CONSTRAINT MOVIE_FK FOREIGN KEY REFERENCES (DISTRIBUTOR.DISTRIBUTOR_ID));
CREATE TABLE CUSTOMER(
CUST_ID VARCHAR(100),
VIDEO_DVD_ID VARCHAR(100),
STREET VARCHAR(1000),
ZIPCODE NUMERIC(6,0),
ACC_NO VARCHAR(20) UNIQUE NOT NULL,
CONSTRAINT CUSTOMER_PK PRIMARY KEY (CUST_ID),
CONSTRAINT CUSTOMER_FK FOREIGN KEY REFERENCES (VIDEO_DVD.VIDEO_DVD_ID));
我正在使用 MySQL 5.7...
我能够通过删除语句末尾的逗号来清除一些错误,所以我希望这仍然有效。我仍然有这些错误..
14:41:47 创建表 VIDEO_DVD(VIDEO_DVD_ID VARCHAR(100), DISTRIBUTOR_ID varchar(100), MOVIE_ID varchar(100), CUSTOMER_ID varchar(100), FINE_AMT numeric(14,0) 检查 (FINE_AMT > 0), DAMAGE_CHARGES numeric(14,0) CHECK (DAMAGE_CHARGES > 0), TYPE CHAR(1) check(TYPE IN ('V','D')), LEASE_DATE DATE, RETURN_DATE DATE NOT NULL, CONSTRAINT VIDEO_DVD_PK PRIMARY KEY (VIDEO_DVD_ID), CONSTRAINT VIDEO_DVD_FK1 FOREIGN KEY (DISTRIBUTOR_ID) REFERENCES DISTRIBUTOR.DISTRIBUTOR_ID) CONSTRAINT VIDEO_DVD_FK2 FOREIGN KEY REFERENCES (MOVIE.MOVIE_ID) CONSTRAINT VIDEO_DVD_FK3 FOREIGN KEY REFERENCES (CUSTOMER.CUST_ID) 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 17 行 0.016 秒处的“CONSTRAINT VIDEO_DVD_FK2 FOREIGN KEY REFERENCES (MOVIE.MOVIE_ID) CONSTRAINT VID”附近使用正确的语法
14:41:47 创建表分配器(DISTRIBUTOR_ID VARCHAR(100),MOVIE_ID VARCHAR(100),VIDEO_DVD_ID VARCHAR(100),名称 VARCHAR(1000) 唯一非空约束 DISTRIBUTOR_PK 主键 (DISTRIBUTOR_ID),约束键 DISTRIBUTOR_FK1 FOREIGN REFERENCES (MOVIE.MOVIE_ID), CONSTRAINT DISTRIBUTOR_FK2 FOREIGN KEY REFERENCES (VIDEO_DVD.VIDEO_DVD_ID)) 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,在第 11 行 0.000 秒的“CONSTRAINT DISTRIBUTOR_PK PRIMARY KEY (DISTRIBUTOR_ID), CONSTRAINT DISTRIBUTOR_”附近使用正确的语法
14:41:47 CREATE TABLE MOVIE(MOVIE_ID VARCHAR(100), DIRECTOR VARCHAR(100) NOT NULL, NAME VARCHAR(100) UNIQUE NOT NULL, TYPE CHAR(1) CHECK (TYPE IN ('C',' H','S')), DISTRIBUTOR_ID VARCHAR(100), ACTOR_NAME VARCHAR(100), LENGTH NUMERIC(14,0) CHECK (LENGTH > 0), AWARDS VARCHAR(1000), RATINGS NUMERIC(2,0) CHECK ( RATINGS IN (1,2,3,4,5,6,7,8,9,10)), RELEASE_YEAR NUMERIC(4,0), CONSTRAINT MOVIE_PK PRIMARY KEY (MOVIE_ID), CONSTRAINT MOVIE_FK FOREIGN KEY (MOVIE_ID) REFERENCES DISTRIBUTOR .DISTRIBUTOR_ID) 错误代码:1215。无法添加外键约束 1.109 秒
我遇到了最后 3 个错误,但我仍然无法开始工作。任何帮助将不胜感激!谢谢!
CONSTRAINT VIDEO_DVD_FK2 FOREIGN KEY (MOVIE_ID) REFERENCES (MOVIE.MOVIE_ID),
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 17 行的“CONSTRAINT VIDEO_DVD_FK2 FOREIGN KEY (MOVIE_ID) REFERENCES (MOVIE.MOVIE_ID), CO”附近使用正确的语法
CONSTRAINT DISTRIBUTOR_PK PRIMARY KEY (DISTRIBUTOR_ID),
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“CONSTRAINT DISTRIBUTOR_PK PRIMARY KEY (DISTRIBUTOR_ID), CONSTRAINT DISTRIBUTOR_”附近使用正确的语法
CREATE TABLE MOVIE( MOVIE_ID VARCHAR(100), DIRECTOR VARCHAR(100) NOT NULL, NAME VARCHAR(100) UNIQUE NOT NULL, TYPE CHAR(1) CHECK (TYPE IN ('C','H','S')), DISTRIBUTOR_ID VARCHAR(100), ACTOR_NAME VARCHAR(100), LENGTH NUMERIC(14,0) CHECK (LENGTH > 0), AWARDS VARCHAR(1000), RATINGS NUMERIC(2,0) CHECK (RATINGS IN (1,2,3,4,5,6,7,8,9,10)), RELEASE_YEAR NUMERIC(4,0), CONSTRAINT MOVIE_PK PRIMARY KEY (MOVIE_ID), CONSTRAINT MOVIE_FK FOREIGN KEY (DISTRIBUTOR_ID) REFERENCES DISTRIBUTOR.DISTRIBUTOR_ID)
错误代码:1215。无法添加外键约束 0.453 秒
【问题讨论】:
【参考方案1】:你还没有写外键的列名。你需要写例如:
CONSTRAINT VIDEO_DVD_FK1 FOREIGN KEY (DISTRIBUTOR_ID) REFERENCES (DISTRIBUTOR.DISTRIBUTOR_ID),
【讨论】:
以上是关于我的表创建中的 CONSTRAINT 语句的主要内容,如果未能解决你的问题,请参考以下文章