gpt4 book ai didi

MySQL 外键引用语法

转载 作者:行者123 更新时间:2023-11-29 16:19:07 24 4
gpt4 key购买 nike

我在 Windows PC 上使用 XAMPP 服务器。最近我正在学习和使用 MySQL 关系表。我正在创建一个 MySQL 查询来创建一个带有外键引用的表。我的代码如下:

 CREATE TABLE loginattempts (
id int(16) NOT NULL,
loginattempts tinyint(9) NOT NULL,
attemptdate DATETIME NOT NULL
)
FOREIGN KEY (id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE
ENGINE = INNODB;

我的数据库中有另一个名为 users 的表。当我执行上面的查询时,我收到一个错误,如下所示:

Error [1064]: MySQL Syntax not correct Correspond to your MariaDB Documentation.

我的语法有什么问题吗,如果有请纠正我!

我们将非常感谢您的帮助。上面的查询应该是用 PHP My Admin 编写的。

P.S.(如有错误欢迎指正)

最佳答案

定义位于创建表语句内部:

CREATE TABLE loginattempts (
id int(16) NOT NULL,
loginattempts tinyint(9) NOT NULL,
attemptdate DATETIME NOT NULL,
FOREIGN KEY (id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = INNODB;

int(16)tinyint(9) 确实没有意义。整数的表示形式最多有 10 个可能的数字,tinyint 最多有 3 个数字。

通常,外键有名称。另外,我推荐:

  • 每个表都有自己的 ID,以表命名(即 userId 而不是 id)。
  • 如果可能,外键与主键具有相同的名称。
  • 约束有名称。

所以,我建议:

CREATE TABLE loginattempts (
loginAttemptId int auto_increment primary key,
userId int NOT NULL,
loginattempts tinyint NOT NULL,
attemptdate DATETIME NOT NULL,
CONSTRAINT fk_loginattempts_userid FOREIGN KEY (userId) REFERENCES users(userId)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = INNODB;

当然,这需要更改 users 表,以便主键是 userId 而不是 id

Here是一个数据库<> fiddle 。

关于MySQL 外键引用语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54607287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com