我试图想出从我的 sql 中的子表中删除行的最佳解决方案。
例如,我有两张表,一张称为 users,另一张称为 users_information。第二个表 users_information 使用名为 user_id 的外键,它实际上是“users”表中的“id”。
我想使用级联删除选项,每当我从“用户”表中删除一行时(通过使用“id” ofc),我想删除用户信息中的同一行,其中 id = user_id。
我很难弄清楚,试着寻找并发现如何在 mysql 中删除级联?
但这没有得到很好的解释,我相信这是我的目标解决方案。
这是我的表格结构,如果您发现我可能做错了/不是最好的方法,请告诉我。
CREATE TABLE `users_information` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`first_name` varchar(15) NOT NULL,
`last_name` varchar(15) NOT NULL,
`country` varchar(30) NOT NULL,
`profession` varchar(40) NOT NULL,
`gender` varchar(6) NOT NULL,
`birthday` datetime NOT NULL,
`city` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`password` varchar(82) NOT NULL,
`email` varchar(60) NOT NULL,
`created` date NOT NULL,
`user_type` int(2) NOT NULL,
`active` smallint(2) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我忘了提:“users_information”的代码产生以下错误:
* #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 13 行的“CONSTRAINT
myForeignKey
FOREIGN KEY (user_id
) REFERENCESusers
( ) O”附近使用正确的语法id