2

MySQLに外部キーで関連付けられた親と子のテーブルがある場合、SQLステートメントを使用して、親からの特定の行と子からの関連行をアトミックな方法でアーカイブテーブル(Parent_ArchiveやChild_Archiveなど)に移動できますか?

4

1 に答える 1

1

トランザクションを使用する-その全体の目的は、一連のSQLステートメントをアトミックにすることです。

たとえば(あまり最適化されていません-一時テーブルで改善できます):

START TRANSACTION;

INSERT Child_Archive 
SELECT DISTINCT 
Child.* FROM Child, Parent
WHERE Child.FK = Parent.PK
  AND Parent.something=11; 

DELETE Child WHERE FK IN (
    SELECT DISTINCT PK FROM Parent WHERE Parent.something=11); 

INSERT Parent_Archive
SELECT DISTINCT * FROM Parent WHERE Parent.something=11;

DELETE Parent WHERE Parent.something=11;

COMMIT;
于 2010-06-10T23:29:26.843 に答える