我试图找到最好的解决方案来删除我的sql中子表的行。
例如我有两个表,一个叫做用户,另一个叫做users_information。 第二个表,users_information使用名为user_id的外键,实际上是 “用户”表中的“id”。
每当我从“users”表中删除一行时,我想使用级联删除选项 (通过使用“id”ofc)我想删除user_information中id = user_id的同一行。
我很难搞清楚,尝试寻找并找到How do I use on delete cascade in 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服务器版本对应的手册,以便在'CONSTRAINT
myForeignKey
FOREIGN KEY(user_id
)附近使用正确的语法参考users
(id
)O'在线13
答案 0 :(得分:2)
在以下行之后添加逗号
KEY user_id
(user_id
)