Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

crucifier

deletar vários registros de várias tabelas

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.