J'ai un Tableau de données et un Tableau d'archives.Atomique [déplacer vers un autre tableau, puis supprimer les données d'origine]
Une webapp verse des données dans le tableau des données , et une tâche cron tire les données toutes les heures et les archives dans l'archive tableau (ce qui maintient la petite table de données et rapide à travailler avec).
Comme je le vois, il y a deux requêtes psudo-SQL à exécuter:
INSERT Archive SELECT * FROM Data;
&
DELETE FROM Data;
Cependant, je ne veux que de supprimer les données qui a été copié avec succès, si la copie échoue je veux qu'il soit laissé dans un état cohérent, avec les données ni à moitié déplacé, ni supprimé.
Quelle est la bonne façon de procéder?
Certains systèmes de bases de données ne sont pas cohérentes sur les requêtes au cours des transactions, uniquement sur les mises à jour, de sorte que « supprimer des données » ou non supprimer des choses qui était ajouté après l'insertion, c'est pourquoi je suggère d'utiliser une requête dans la suppression. –
Je pense que vous vouliez sélectionner dans la sous-requête la table d'archivage: 'delete from data where primary_key in (sélectionnez primary_key from archive);' –
De même, 'begin transaction' n'est pas une commande MySQL valide. La commande appropriée est 'start transaction'. –