crucifier 0 Denunciar post Postado Abril 5, 2007 Seguinte, tenho as tabelas, cursos, periodos, materias, assuntos e paginas.. a tabela pagina, é ligada com a tabela assuntos (eu coloco id_assunto na tabela pagina) a tabela assunto por sua vez, é ligada com a tabela materias, a tabela materias é ligada com a tabela periodos e assim por diante... certo... daí eu quero deletar um curso (da tabela curso)...pra ele deletar o resto, vou ter que dar um while em cada tabela pra listar cada registro.. tipo: $q = mysql_query("select id from periodos where id_curso = '1'");while($x = mysql_fetch_array($q)) {[left] $qq = mysql_query("select id from materias where id_periodo = '2';"); while($xx = mysql_fetch_array($qq)) { //e assim por diante } mysql_unbuffered_query("delete from materias where id_periodo = '2';");[/left]} tem algum jeito de fazer isso sem utilizar tantas linhas? via mysql ou php sei la..tem? Compartilhar este post Link para o post Compartilhar em outros sites
rsddaros 0 Denunciar post Postado Abril 5, 2007 Existe comando sql que faz isso altomaticamente quando você deleta um registro de outra tabela e este registro tem sua fk em outra tabela o mysql e outros sgdbr deleta todas as referencias daquele registro... segue exemploFOREIGN KEY(id) REFERENCES materias(id) ON DELETE CASCADEtem que deletar em cascata... Compartilhar este post Link para o post Compartilhar em outros sites
crucifier 0 Denunciar post Postado Abril 5, 2007 entãomas a tabela precisa ser innodb né? Compartilhar este post Link para o post Compartilhar em outros sites
crucifier 0 Denunciar post Postado Abril 5, 2007 dei uma pesquisada e tem que ser sim... se alguem precisar: http://www.mysqlbrasil.com.br/discus/utilizando_foreign_key fiz o teste, e é muito mais fácil... só não sei se tabela innodb é mais pesada ou não faz algo que a myisam faz...vo da uma pesquisada, qualquer coisa eu posto =) Compartilhar este post Link para o post Compartilhar em outros sites