sql >> Database >  >> RDS >> Mysql

Hoe verwijder ik cascade op MySQL MyISAM storage engine?

Ja. Dat kan gewoon niet met die engine.

Bewerk. Je zou een trigger kunnen schrijven die, zodra je een record in je tabel verwijdert, alle onderliggende records in alle andere tabellen verwijdert.

OK. Ik schreef je een voorbeeld:

 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;

Ik hoop dat het helpt.

Bewerk. Uiteraard werkt het, zelfs als je meer id's uit table1 verwijdert op hetzelfde moment:

delete from tab1 where id in (2,3,4);



  1. Dubbele dubbele punt (::) notatie in SQL

  2. MySQL String-functies (volledige lijst)

  3. MySQL-fout nr 121

  4. Delphi op Linux verbinden met SQL Server