如何级联删除父表行

时间:2013-03-08 16:45:14

标签: mysql sql foreign-keys cascade

我试图找到最好的解决方案来删除我的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)附近使用正确的语法参考usersid)O'在线13

1 个答案:

答案 0 :(得分:2)

在以下行之后添加逗号

KEY user_iduser_id