Архив иерархии родительских / дочерних таблиц в MySQL - PullRequest
2 голосов
/ 11 июня 2010

Если у меня есть таблицы Parent и Child в MySQL, связанные внешним ключом, возможно ли с помощью оператора SQL переместить определенные строки из Parent и связанные строки из Child в архивные таблицы (например, Parent_Archive и Child_Archive) в атомарном образом?

1 Ответ

1 голос
/ 11 июня 2010

Использование транзакций - их цель - сделать последовательность операторов 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...