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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top