Carcleo 4 Denunciar post Postado Dezembro 28, 2012 Feliz Ano Novo pessoal! Gostaria de uma orientação com on delete cascate. Tenho uma tabela de categorias de produtos na qual gostaria de fazer o seguinte: toda vez que eu deletar uma categoria, gostaria de deletar todos os produtos quem tem esta categoria por sua categoria. Segue as tabelas: CREATE TABLE categorias ( id_categorias int(4) unsigned NOT NULL AUTO_INCREMENT, nome_categorias varchar(100) NOT NULL DEFAULT '', imagem_categorias char(36) NOT NULL DEFAULT '', PRIMARY KEY (id_categorias) ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; CREATE TABLE produtos ( id_produtos int(4) unsigned NOT NULL AUTO_INCREMENT, id_categorias_produtos int(4) NOT NULL DEFAULT '0', nome_produtos varchar(50) NOT NULL DEFAULT '', imagem_produtos char(36) DEFAULT NULL, referencia_produtos varchar(10) NOT NULL DEFAULT '', descricao_produtos text NOT NULL, bloqueio_produtos char(1) NOT NULL DEFAULT '', PRIMARY KEY (id_produtos) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8; Como eu poderia fazer isso na estrutura da tabela? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Dezembro 29, 2012 Veja aqui as regras do ON DELETE e veja qual melhor se aplica ao seu caso. Pelo que entendi seria na FK de produtos, mas atente que não se deveria deletar um produto que possa estar em outra tabela, vendas por exemplo, neste caso eu faria um RESTRICT obrigando a se mudar os produtos de categoria antes de se deletar uma categoria. Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Janeiro 8, 2013 Como o colega acima falou, fazer um restrict antes de fazer tal operação. Mas sanando a sua dúvida: primeiro você tem que "setar uma FK", vou passar o comando: alter table TBL_FILHA add foreign key (CMPO_FK_TBL_FLIHA) references TBL_PAI (PK_TBL_PAI) on delete cascade. Explicando o comando: alter table -> alterar tabela / add foreign key -> adicionar chave estrangeira / references -> referenciar a tabela, nesse caso nome da tabela e entre parenteses o campo a ser referenciado / o evento: quando deletar vá os filhos juntos Já que fazendo assim, o BD vai entender se você deletar, no caso, a categoria o que que tiver registrado sob o ID da categoria vai junto. Ps: os nomes em maiusculos são os campos e as tabelas que você queira / precise relacionar. Espero ter ajudado ------------------------------------ merchan do meu site: http:// www.gcasweb.orgfree.com Compartilhar este post Link para o post Compartilhar em outros sites