sql >> Databáze >  >> RDS >> Mysql

Jak používat kaskádu mazání na úložišti MySQL MyISAM?

Ano. S tím motorem to prostě nejde.

Upravit. Můžete napsat spouštěč, který jakmile smažete záznam v tabulce, odstraní všechny podřízené záznamy ve všech ostatních tabulkách.

OK. Napsal jsem vám příklad:

 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;

Doufám, že to pomůže.

Upravit. Očividně to funguje, i když odstraníte více id z tabulky1 současně:

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



  1. Získejte nejlepší výsledky pro každou skupinu (v Oracle)

  2. Připojte se k databázi MSSQL pomocí Flask-SQLAlchemy

  3. Korupce databáze v MS Access a jak se vypořádat

  4. Počítat kumulativní součet v Postgresql