Niestety nie można jednocześnie wstawiać i usuwać w jednym zapytaniu , ale możesz to wszystko zrobić w jednej transakcji jeśli korzystasz z silnika sklepu transakcyjnego (np. InnoDB). Co więcej, RETURNING
jest obsługiwany przez Oracle i PostgreSQL, ale nie przez MySQL i dlatego musisz napisać oddzielne delete
i insert
oświadczenia.
Korzystanie z transakcji zagwarantuje jednak, że tylko pomyślnie skopiowane dane zostaną usunięte z tabeli A. Rozważ następujące kwestie:
begin transaction;
insert into tableB select * from tableA where 'your_condition_here';
delete from tableA where 'your_condition_here';
commit;