У меня есть таблица под названием user-friend
имея UID and FID.
у меня есть еще одна таблица называется user-friend-type
, имеет UID и FID как Foreign key
с CASCADE
, в этой таблице ID, UID, FID
формы Первичный ключ Проблема заключается в том, что если я выписка со счета delete from User-friend where UID=1 and FID=2
. он также удалил все UID = 1 от User-Friend-type
, и это очень странно для меня. я что-то упускаю?Внешний ключ SQL-запрос не работает
здесь ШОУ Создать для пользователя-друга-типа
CREATE TABLE IF NOT EXISTS `userfrnd_source` (
`id` int(16) NOT NULL AUTO_INCREMENT,
`userId` int(16) NOT NULL,
`friendId` int(16) NOT NULL,
`source_import_Id` int(16) NOT NULL,
`sourceType` varchar(56) NOT NULL,
PRIMARY KEY (`id`,`userId`,`friendId`),
KEY `friendId` (`friendId`),
KEY `source_import_Id` (`source_import_Id`),
KEY `ufsource_ufdfk_idx` (`userId`,`friendId`)
)
SHOW CREATE для пользователя-друга (Parent)
CREATE TABLE IF NOT EXISTS `user_friend_detail` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`userId` int(16) NOT NULL,
`friendId` int(16) NOT NULL,
PRIMARY KEY (`id`,`userId`,`friendId`),
KEY `ufd_users_fk1_idx` (`userId`),
KEY `ufd_usersfk2_idx` (`friendId`)
)
ALTER TABLE `userfrnd_source`
ADD CONSTRAINT `userfrnd_source_ibfk_2` FOREIGN KEY (`friendId`) REFERENCES `user_friend_detail` (`friendId`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `userfrnd_source_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `user_friend_detail` (`userId`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Constraints for table `user_friend_detail`
--
ALTER TABLE `user_friend_detail`
ADD CONSTRAINT `ufd_usersfk1` FOREIGN KEY (`userId`) REFERENCES `users` (`userId`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ufd_usersfk2` FOREIGN KEY (`friendId`) REFERENCES `users` (`userId`) ON DELETE CASCADE ON UPDATE CASCADE;
Двигатель InnoDB
Что 'SHOW CREATE TABLE' выглядеть для обеих таблиц? –
Внимательно прочитайте документацию: http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html, найдите описание 'ON DELETE CASCADE' и как оно работает. – krokodilko
+1 к предложению от @ExplosionPills. Трудно представить, что вы говорите, со всеми столбцами и ссылками. Легко использовать 'SHOW CREATE TABLE \ User-friend \' ', а также для другой таблицы, а затем редактировать свой вопрос и вставлять результат. –