MySQL insérer une clé en double; supprimer?
Est-il un moyen de supprimer l'enregistrement sur une clé en double dans MySQL?
Dire que nous avons un enregistrement dans la base de données avec la clé primaire et nous essayons d'en ajouter un autre avec la même clé - ON DUPLICATE KEY UPDATE
serait tout simplement de mettre à jour le dossier, mais est-il une option pour supprimer l'enregistrement si existe déjà? C'est simple en fonctionnalités sur le clic d'un bouton.
Utiliser trigger
Merci - je pense que c'est la seule option.
Merci - je pense que c'est la seule option.
OriginalL'auteur Spencer Mark | 2012-07-15
Vous devez vous connecter pour publier un commentaire.
C'est un travail, mais il fonctionne:
Créer une nouvelle colonne et de l'appeler
do_delete
, ou que ce soit, faisant d'elle un petit-int. Alors neOn Duplicate Key Update do_delete = 1;
En fonction de votre version de MySQL/connexion, vous pouvez exécuter plusieurs requêtes dans la même instruction. Toutefois, si non, il suffit d'exécuter une requête distincte immédiatement par la suite. De toute façon, la prochaine requête serait juste:
Delete From [table] Where do_delete = 1;
. De cette façon, si ses une nouvelle entrée, il ne sera pas effacer quoi que ce soit. Si ce n'était pas une nouvelle entrée, il va alors marquer pour suppression, alors vous pouvez le supprimer.OriginalL'auteur
Utilisation REMPLACER DANS:
permettra d'insérer de nouvelles données ou si thr même il existe des données permettra de supprimer les données et insérer un nouveau
OriginalL'auteur
Le plus proche possible de la solution pour le même est
REPLACE
déclaration. Voici la documentation pour les REMPLACER.Une question semblable a été posée sur MySQL Forums et la recommandé(et la seule) réponse était d'utiliser
REPLACE
.Je suppose que la seule option (si le ci-dessus est la seule solution possible) dans ce cas sera d'exécuter des instructions distinctes - d'abord pour vérifier si l'enregistrement est trouvé, alors basé sur le résultat soit de l'ajouter ou de le supprimer.
ou créer un
BOOLEAN
ouENUM
colonne et mis à 0 ou 1, selon que vous le vouliez ou non.OriginalL'auteur
Oui bien sûr il y a des solutions dans MySQL pour votre problème.
Si vous souhaitez supprimer ou ignorer la nouvelle insertion d'enregistrement si il y a déjà une copie de l'enregistrement existe dans la colonne de la clé de la table, vous pouvez utiliser IGNORER comme ceci:
Ici
id
colonne de clé primaire dans la tablemytbl
. Cela permettra d'insérer plusieurs valeurs dans le tableau en supprimant ou en sautant les nouveaux enregistrements en double.Espère que cela va répondre à votre exigence.
OriginalL'auteur