To zależy od Ciebie i zazwyczaj zależy to od tego, jak ważne są dane, które usuwasz, lub na ile chcesz być tolerancyjny w przypadku wypadków.
Metoda, której lubię używać, to posiadanie bazy danych klonów dla elementów, które chcesz usunąć. Po usunięciu skopiuj zawartość wybranego wiersza do nowej bazy danych, a następnie usuń. Posiadanie dodatkowych „usuniętych” artykułów lub elementów w systemie po prostu zajmuje więcej miejsca i ostatecznie spowolni zapytania (potencjalnie).
Po zapełnieniu bazy danych „usuń artykuły” uruchom zrzut, zarchiwizuj, skróć.
Załóżmy, że masz bazę danych CMS z tabelą o nazwie ARTICLES, w której chcesz przechowywać usunięte posty, utworzymy identyczną bazę danych o tej samej strukturze tabeli:
CREATE DATABASE `deleted`;
CREATE TABLE deleted.cmsarticles LIKE CMS.ARTICLES;
W swoim skrypcie PHP, który usuwa zawartość, zrobiłbyś coś takiego:
//GRAB THE ID OF THE ARTICLE YOU ARE DELETING, MAKE SURE TO SANITIZE!
$article_id=$_POST['id'];
if(is_numeric($article_id) {
$dbconnect=databaseFunction();
$result=$dbconnect->query("SELECT `row1`,`row2` FROM `ARTICLES` WHERE `id`=$article_id");
if($result->num_rows!=0) {
$row=$result->fetch_array(MYSQLI_ASSOC);
//Open new connection to deleted database
$dbconnect2=otherDBFunction();
$dbconnect2->query("INSERT INTO `cmsarticles`(row1,row2) VALUES ({$row['row1']},{$row['row2']}");
$dbconnect->query("DELETE FROM `ARTICLES` where `id`={$_POST['id']}");
}
}