Déplacement de données entre des tables avec correspondance conditionnelle
Vous pouvez transférer efficacement des données d'une table à une autre en fonction de critères spécifiques à l'aide d'instructions SQL. Dans ce cas, vous souhaitez déplacer toutes les lignes correspondantes du tableau 1 vers le tableau 2 où le nom d'utilisateur est égal à « X » et le mot de passe est égal à « X ».
Approche basée sur les transactions
La méthode la plus fiable consiste à utiliser une transaction pour garantir que les deux opérations (insertion dans le tableau 2 et suppression du tableau 1) se produisent comme une seule unité de travail. Les transactions garantissent l'intégrité des données en garantissant que les deux opérations réussissent ou qu'aucune des deux n'est appliquée.
Déclaration SQL
L'instruction SQL suivante utilise une transaction pour atteindre votre objectif :
BEGIN TRANSACTION; INSERT INTO Table2 (column1, column2, ...) SELECT column1, column2, ... FROM Table1 WHERE username = 'X' AND password = 'X'; DELETE FROM Table1 WHERE username = 'X' AND password = 'X'; COMMIT;
Explication
Si vous souhaitez empêcher l'insertion de nouvelles lignes correspondantes dans la table 1 pendant la transaction, vous pouvez ajouter une condition supplémentaire à l'instruction INSERT à l'aide de l'opérateur NOT EXISTS :
Cela garantit que seules les lignes correspondantes uniques sont inséré dans le tableau2.INSERT INTO Table2 (column1, column2, ...) SELECT column1, column2, ... FROM Table1 WHERE username = 'X' AND password = 'X' AND NOT EXISTS (SELECT 1 FROM Table2 WHERE username = 'X' AND password = 'X');
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!