如何解决无法在MySQL中创建表创建外键约束,但语法与其他外键相同
我目前正在努力理解为什么第一个 MysqL 代码对位置外键不起作用。同时,当我将反引号添加到 Position 时,它允许创建表格。
我搜索过 Position 是否是 MysqL 的保留字,但找不到任何提及它是保留字的内容。
所以我想知道是否有人知道它为什么不起作用。
CREATE TABLE Employee (
IDEmployee INT AUTO_INCREMENT UNIQUE NOT NULL,IDPosition INT NOT NULL,IDPerson INT NOT NULL,EmployeeNumber VARCHAR(25) NOT NULL,Username VARCHAR(25) NOT NULL,Password VARCHAR(256) NOT NULL,PRIMARY KEY (IDEmployee),FOREIGN KEY (IDPosition) REFERENCES Position(IDPosition),FOREIGN KEY (IDPerson) REFERENCES Person(IDPerson)
);
CREATE TABLE Employee (
IDEmployee INT AUTO_INCREMENT UNIQUE NOT NULL,FOREIGN KEY (IDPosition) REFERENCES `Position`(IDPosition),FOREIGN KEY (IDPerson) REFERENCES Person(IDPerson)
);
解决方法
mysql> CREATE TABLE Employee (
-> IDEmployee INT AUTO_INCREMENT UNIQUE NOT NULL,-> IDPosition INT NOT NULL,-> IDPerson INT NOT NULL,-> EmployeeNumber VARCHAR(25) NOT NULL,-> Username VARCHAR(25) NOT NULL,-> Password VARCHAR(256) NOT NULL,-> PRIMARY KEY (IDEmployee),-> FOREIGN KEY (IDPosition) REFERENCES Position(IDPosition),-> FOREIGN KEY (IDPerson) REFERENCES Person(IDPerson)
-> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Position(IDPosition),FOREIGN KEY (IDPerson) REFERENCES Person(IDPerson)
)' at line 9
这个错误是因为 POSITION() 是一个函数。
mysql> help position;
Name: 'POSITION'
Description:
Syntax:
POSITION(substr IN str)
POSITION(substr IN str) is a synonym for LOCATE(substr,str).
URL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。