Supposons que j'ai une table avec le schéma suivant:Table de récupération Question
tableid
field1
field2
.....
J'ai deux copies de ma base de données (sauvegarde et production). Sur l'instance de production, une requête a été accidentellement exécuté qui a fait ce qui suit:
Update table set field2 = null where field1 = 'x';
Je suis en train d'annuler cette requête sur la base des données stockées dans l'instance de sauvegarde (où la déclaration mauvaise mise à jour n'a pas été exécutée).
De quelles instructions SQL aurais-je besoin pour s'exécuter sur la base de données de sauvegarde afin d'extraire le tableId et les valeurs de field2? Comment puis-je convertir cela en instructions de mise à jour appropriées pour corriger la production? Il pourrait y avoir quelques lignes impactées par la requête.
Je pense que je pourrais sélectionner les valeurs effacées de la sauvegarde avec la requête suivante:
Select tableId, field2 where field1 = 'x';
Cependant, je suis à une perte sur la façon de convertir en une déclaration de mise à jour facile. Toute idée (ou de meilleures idées) serait appréciée.
deux followups: la tableid est une clé primaire unique entier et les deux les bases de données sont sur des machines différentes alors suggérez-vous un vidage de la table sur la sauvegarde pour le déplacer dans une table sur la production? – Visitor
Oui, effectuez une copie temporaire de la table de sauvegarde dans la base de données de production. En fait, un meilleur choix consiste à faire une copie temporaire de la table de production brisée dans la sauvegarde, et y travailler. Une fois que c'est bon, puis copiez ces données en production. – thursdaysgeek