2

如果我在 MySQL 中有一个通过外键关联的 Parent 和 Child 表,是否可以使用 SQL 语句以原子方式将 Parent 中的某些行和 Child 中的相关行移动到归档表(例如 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 回答