sql >> データベース >  >> RDS >> Mysql

MySQL MyISAMストレージエンジンで削除カスケードを使用するにはどうすればよいですか?

    はい。単にそのエンジンではできません。

    編集。テーブル内のレコードを削除すると、他のすべてのテーブル内のすべての子レコードを削除するトリガーを作成できます。

    Ok。私はあなたに例を書きました:

     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;
    

    お役に立てば幸いです。

    編集。明らかに、同時にtable1からさらにIDを削除しても機能します:

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



    1. android.database.sqlite.SQLiteException:near s:構文エラー(コード1):、

    2. phpインクルードエラーがパスを見つけられません

    3. WHERE句で大文字と小文字を区別する検索を行う方法(SQL Serverを使用しています)?

    4. エラーコード:2013。クエリ中にMySQLサーバーへの接続が失われました