Maison >base de données >tutoriel mysql >Une introduction détaillée à la façon dont MySQL utilise UNIQUE pour réaliser une insertion de données sans duplication
Lorsqu'une colonne unique insère un enregistrement contenant des valeurs en double sur une clé UNIQUE, nous pouvons contrôler la façon dont MySQL gère cette situation : utilisez le mot-clé IGNORE ou ON DUPLICATE KEY UP La clause DATE ignore INSERT, interrompt les opérations ou met à jour anciens enregistrements avec de nouvelles valeurs.
SQL UNIQUE Contrainte
La contrainte UNIQUE identifie de manière unique chaque enregistrement dans une table de base de données.
Les contraintes UNIQUE et PRIMARY KEY fournissent des garanties d'unicité pour une colonne ou un ensemble de colonnes.
PRIMARY KEY a automatiquement défini des contraintes UNIQUE.
Veuillez noter que chaque table peut avoir plusieurs contraintes UNIQUE, mais il ne peut y avoir qu'une seule contrainte PRIMARY KEY par table.
Le SQL suivant crée une contrainte UNIQUE sur la colonne "Id_P" lors de la création de la table "Persons" :
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (Id_P) )
Si vous devez nommer la contrainte UNIQUE, et définissez UNIQUE pour plusieurs colonnes Contrainte, veuillez utiliser la syntaxe SQL suivante :
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName) )
Lorsque la table a été créée, si vous devez créer une contrainte UNIQUE sur la colonne "Id_P", veuillez utiliser le SQL suivant :
ALTER TABLE Persons ADD UNIQUE (Id_P)
Pour nommer une contrainte UNIQUE et définir des contraintes UNIQUE pour plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
Pour révoquer une contrainte UNIQUE, veuillez utiliser le SQL suivant :
ALTER TABLE Persons DROP INDEX uc_PersonID
De cette façon, MySQL demandera une entrée en double valeur1-valeur2 pour clé uni_que chaque fois qu'un enregistrement en double est inséré. Bien sûr, vous pouvez. ajoutez ignorer lors de l'insertion pour l'ignorer
Maintenant, après nous être assuré qu'il n'y a pas d'enregistrements en double, nous devons lancer l'opération d'insertion si l'enregistrement n'existe pas, et l'opération de mise à jour s'il existe
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...
Cette instruction signifie insérer la valeur. S'il n'existe pas d'enregistrement de ce type, exécutez
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
Dans cette section, si l'enregistrement existe, exécutez
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!