微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在MySQL中创建表创建外键约束,但语法与其他外键相同

如何解决无法在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 举报,一经查实,本站将立刻删除。