我在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;
我的数据库中还有一个名为用户的表。当我执行上面的查询时,我得到一个错误,就像这样:
错误[1064]:MySQL语法不正确对应于您的MariaDB文档。
如果语法有问题,请纠正我!
我们将非常感谢您的帮助。上面的查询应该用PHP My Admin编写。
P.S.(如果发现任何错误,请随时进行编辑)
答案 0 :(得分:0)
定义在创建表语句内
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个数字。
通常,外键被赋予名称。另外,我建议:
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是db <>小提琴。