如果我在MySQL中有一个由外键相关的父子表,是否可以使用SQL语句将父中的某些行和子中的相关行移动到原子中的归档表(例如Parent_Archive和Child_Archive)中方式?
答案 0 :(得分: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;