Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar a cascata de exclusão no mecanismo de armazenamento MySQL MyISAM?


Sim. Simplesmente você não pode com esse motor.

editar. Você pode escrever um gatilho que, uma vez que você exclua um registro em sua tabela, exclua todos os registros filho em todas as outras tabelas.

OK. Escrevi um exemplo para você:
 create table tab1 (
 id int )
 engine = myisam;

insert into tab1 values (1),(2),(3),(4); 

 create table tab2(
 id int not null auto_increment primary key,
 id_tab1 int
 ) engine = myisam;

 insert into tab2 (id_tab1) values (1),(2),(2),(3),(4);

 create table tab3(
 id int not null auto_increment primary key,
 id_tab1 int
 ) engine = myisam;

  insert into tab3 (id_tab1) values (1),(2),(2),(3),(2);


delimiter //
create trigger deletecascade after delete on tab1
for each row
begin
delete from tab2 where id_tab1 = old.id;
delete from tab3 where id_tab1 = old.id;
end; //
delimiter ;

delete from tab1 where id = 2;

Espero que ajude.

editar. Obviamente, funciona mesmo se você excluir mais id da tabela1 ao mesmo tempo:
delete from tab1 where id in (2,3,4);