Como faço para usar em cascata de exclusão no mysql?
-
21-08-2019 - |
Pergunta
Eu tenho um banco de dados de componentes. Cada componente é de um tipo específico. Isso significa que há um relacionamento muitos-para-um entre um componente e um tipo. Quando eu excluir um tipo, eu gostaria de apagar todos os componentes que tem uma chave estrangeira desse tipo. Mas, se não me engano, cascata excluir irá apagar o tipo quando o componente é excluído. Existe alguma maneira de fazer o que eu descrevi?
Solução
Aqui está o que você incluir na sua mesa de componentes.
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
)
Basta lembrar que você precisa para usar o mecanismo de armazenamento InnoDB:. O mecanismo de armazenamento MyISAM padrão não suporta chaves estrangeiras
Outras dicas
Você tem que definir suas restrições de chave estrangeira como ON CASCADE DELETE.
Nota:. Você precisa usar o mecanismo de armazenamento InnoDB, ele mecanismo de armazenamento MyISAM padrão não suportam chaves estrangeiras relação
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
)
usar este sql
T1 DELETE T2 DE T1 INNER JOIN T2 NO T1.key = T2.key Condição WHERE