Maison >base de données >tutoriel mysql >Comment garantir des lignes uniques lors de l'insertion de données dans MySQL ?
MySQL fournit des mécanismes polyvalents pour l'insertion de données, vous permettant d'implémenter des insertions conditionnelles qui empêchent les lignes en double.
Un scénario implique une table nommée x_table avec des colonnes instance, user et item, où l'instance est unique. Pour insérer une nouvelle ligne dans x_table uniquement si la combinaison utilisateur et élément n'existe pas déjà, suivez ces étapes :
Si votre version MySQL prend en charge la sélection à partir d'autres tables lors de l'insertion, considérez la requête suivante :
INSERT INTO x_table(instance, user, item) SELECT 919191, 123, 456 FROM dual WHERE NOT EXISTS ( SELECT * FROM x_table WHERE user = 123 AND item = 456 );
Dans cette requête, dual est une table à une seule ligne qui garantit la disponibilité d'une ligne valide, tandis que le NOT La condition EXISTS vérifie l’absence de lignes en double. Si aucune correspondance n'est trouvée, la nouvelle ligne est insérée.
Alternativement, l'instruction MERGE fournit un outil puissant pour les insertions conditionnelles. Sa syntaxe est la suivante :
MERGE INTO x_table AS target USING ( SELECT 919191 AS instance, 123 AS user, 456 AS item ) AS source ON (target.user = source.user AND target.item = source.item) WHEN NOT MATCHED THEN INSERT VALUES (source.instance, source.user, source.item);
Dans ce cas, la clause USING précise les valeurs à insérer, tandis que la clause ON établit les critères de correspondance. Si aucune ligne correspondante n'existe dans la table cible (x_table), INSERT est effectué.
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!