Rất tiếc, bạn không thể thực hiện cả việc chèn và xóa trong một truy vấn , nhưng bạn có thể thực hiện tất cả trong một giao dịch nếu bạn đang sử dụng công cụ cửa hàng giao dịch (như InnoDB). Hơn nữa, RETURNING
được hỗ trợ bởi Oracle và PostgreSQL nhưng không phải bởi MySQL và do đó bạn cần viết delete
riêng biệt và insert
tuyên bố.
Tuy nhiên, sử dụng một giao dịch sẽ đảm bảo rằng chỉ dữ liệu được sao chép thành công mới bị xóa khỏi tableA. Hãy xem xét những điều sau:
begin transaction;
insert into tableB select * from tableA where 'your_condition_here';
delete from tableA where 'your_condition_here';
commit;