Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL无法添加外键约束。不知道错误在哪里_Mysql_Sql - Fatal编程技术网

Mysql SQL无法添加外键约束。不知道错误在哪里

Mysql SQL无法添加外键约束。不知道错误在哪里,mysql,sql,Mysql,Sql,我正在学习sql并尝试创建一个数据库,但是我在这个sql中遇到了错误,我不知道为什么会出现这些错误 createtableemployee( Fname varchar(15)不为空, Minit char, Lname varchar(15)不为空, Ssn字符(9)不为空, b日期, 地址:varchar(30), 性角色, 工资小数(10,2), 超级字符(9), Dno int不为空, 主键(Ssn), 外键(Super_ssn)引用员工(ssn), 外键(Dno)参考部门(DNNum

我正在学习sql并尝试创建一个数据库,但是我在这个sql中遇到了错误,我不知道为什么会出现这些错误

createtableemployee(
Fname varchar(15)不为空,
Minit char,
Lname varchar(15)不为空,
Ssn字符(9)不为空,
b日期,
地址:varchar(30),
性角色,
工资小数(10,2),
超级字符(9),
Dno int不为空,
主键(Ssn),
外键(Super_ssn)引用员工(ssn),
外键(Dno)参考部门(DNNumber)
);
创建表格部门(
Dname varchar(15)不为空,
Dnumber int不为空,
经理ssn字符(9)不为空,
经理开始日期,
主键(Dnumber),
唯一(Dname),
外键(经理ssn)引用员工(ssn)
);
创建表DEPT\u位置(
Dnumber int不为空,
Dlocation varchar(15)不为空,
主键(数据编号、数据位置),
外键(Dnumber)参考部门(Dnumber)
);
创建表项目(
Pname varchar(15)不为空,
Pnumber int不为空,
Plocation varchar(15),
Dnum int不为空,
主键(Pnumber),
唯一(Pname),
外键(Dnum)参考部门(DNNumber)
);
创建工作表(
Essn字符(9)不为空,
Pno int不为空,
小时小数(3,1)不为空,
主键(Essn,Pno),
外键(Essn)引用员工(Ssn),
外键(Pno)引用项目(PNNumber)
);
创建依赖于表的(
Essn字符(9)不为空,
从属名称varchar(15)不为空,
性角色,
b日期,
关系varchar(8),
主键(Essn,从属_名称),
外键(Essn)引用员工(Ssn)

);首先尝试仅使用主键和唯一约束创建所有表。之后,您可以创建外键约束,如下所示

在第一个表创建中删除此行

FOREIGN KEY (Dno) REFERENCES DEPARTMENT (Dnumber)
稍后添加到下面的行

ALTER TABLE EMPLOYEE 
ADD CONSTRAINT FK_Employee
FOREIGN KEY (Dno)
REFERENCES Department(Dnumber)

问题是,您正在从
employee
表中引用
department
,反之亦然,但当数据库引擎尝试创建
employee
department
表时,该表还不存在

若要解决此问题,可以在创建两个表后,在
部门
表上创建FK

创建表部门(
Dname varchar(15)不为空,
Dnumber int不为空,
经理ssn字符(9)不为空,
经理开始日期,
主键(Dnumber),
唯一(Dname)
);
创建表EMPLOYEE(
Fname varchar(15)不为空,
Minit char,
Lname varchar(15)不为空,
Ssn字符(9)不为空,
b日期,
地址:varchar(30),
性角色,
工资小数(10,2),
超级字符(9),
Dno int不为空,
主键(Ssn),
外键(Super_ssn)引用员工(ssn),
外键(Dno)参考部门(DNNumber)
);
更改表部门添加外键(经理ssn)引用员工(ssn);
--脚本的其余部分

这是一份工作报告。

您遇到了哪些错误?您使用的是mySQL还是MS SQL Server(它们是不同的)?我得到了#1215-无法添加外键约束,并且在Wampt上使用mySQL这是无效的SQL Server语法,所以我猜这一定是我的mySQL?无论使用何种DBMS,都不应以纯文本形式存储SSN。但你确实在学习,所以可能这只是一个项目,而不是一个真正的应用程序。@SeanLange它只是试图学习如何编写语句。是什么使它不是validI说它不是有效的sql server语法,然后你说你正在使用mysql。它们是不同的东西,语法也不同。你怎么称呼约束有关系吗?你也可以只添加外键而不使用约束名称。