外国行没有删除(有级联),为什么?

时间:2014-04-18 13:17:15

标签: mysql foreign-keys

我遇到问题,即使我的父行被删除,我的子行也不会被删除。即使我有ON DELETE CASCADE

我的父表格如下:

CREATE TABLE `rw_profiles` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 ...
 PRIMARY KEY (`id`),
 KEY `profiles_logo_id_foreign` (`logo_id`),
 KEY `profiles_subscription_id_foreign` (`subscription_id`),
 KEY `profiles_deleted_at_name_index` (`deleted_at`,`name`),
 CONSTRAINT `profiles_logo_id_foreign` FOREIGN KEY (`logo_id`) REFERENCES `rw_profile_logos` (`id`),
 CONSTRAINT `profiles_subscription_id_foreign` FOREIGN KEY (`subscription_id`) REFERENCES `rw_subscription_types` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci

我的子表如下所示:

CREATE TABLE `rw_profile_access` (
 `profile_id` int(10) unsigned NOT NULL,
 `user_id` int(10) unsigned NOT NULL,
 ...
 UNIQUE KEY `profile_access_profile_id_user_id_unique` (`profile_id`,`user_id`),
 KEY `profile_access_user_id_foreign` (`user_id`),
 CONSTRAINT `profile_access_profile_id_foreign` FOREIGN KEY (`profile_id`) REFERENCES `rw_profiles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `profile_access_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `rw_users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci

外键是"已安装"在rw_profile_access上没有问题,但当我从rw_profiles删除一行时,来自rw_profiles.id=rw_profile_access.profile_id的相应行(profile_access}并不会自行删除。

删除父行时,为什么子行不会自行删除?

如果我运行以下查询,则foreign_key_checks值为on

SHOW Variables WHERE Variable_name='foreign_key_checks'

1 个答案:

答案 0 :(得分:0)

mariadb-server(版本10.0.10)一定有问题,我将其删除,现在正在使用mysql-server,现在它可以正常工作。