У меня есть база данных компонентов. Каждый компонент имеет определенный тип. Это означает, что между компонентом и типом существует взаимосвязь "один-к-одному". Когда я удаляю тип, я хотел бы удалить все компоненты, у которых есть внешний ключ этого типа. Но если я не ошибаюсь, удаление каскада удалит тип при удалении компонента. Есть ли способ сделать то, что я описал?
Как использовать для удаления каскада в mysql?
Ответ 1
Здесь вы можете добавить в таблицу компонентов.
CREATE TABLE `components` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
`moreInfo` VARCHAR(32),
-- etc
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
Просто помните, что вам нужно использовать механизм хранения InnoDB: механизм хранения MyISAM по умолчанию не поддерживает внешние ключи.
Ответ 2
Вы должны определить ограничения внешнего ключа как ON DELETE CASCADE.
Примечание: Вам необходимо использовать механизм хранения InnoDB, механизм хранения по умолчанию MyISAM не поддерживает отношение внешних ключей.
CREATE TABLE 'table2' (
'id' int(11) NOT NULL auto_increment,
'name' int(11) NOT NULL,
PRIMARY KEY ('id'),
KEY 'ids' ('ids')
CONSTRAINT 'foreign' FOREIGN KEY ('ids')
REFERENCES 'table2' ('ids') ON DELETE CASCADE ON UPDATE CASCADE
)
Ответ 3
используйте этот sql
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key Условие WHERE