2011-10-14 1 views
1

J'ai lu quelques solutions en cas de débordement de la pile et a trouvé que ce soit le plus proche de ma question:MySQL insérer si une colonne spécifique n'a pas une valeur spécifique déjà

MySQL "good" way to insert a row if not found, or update it if it is found

Fondamentalement, je Je crée un index de mots (à partir de sites Web) et une de mes tables est juste une clé primaire (id entier), et un mot varchar (35).

Je dois pouvoir essayer d'insérer un nouveau mot (fondamentalement, un nouveau mot) dans ce tableau. Si le mot n'est pas présent, un nouvel enregistrement sera ajouté. S'il est présent, rien ne se passera.

Quelle est la meilleure façon d'obtenir cette fonctionnalité? "REPLACE INTO" change mes clés ce qui n'est pas souhaitable - je voudrais juste que ce soit un no-op si mysql trouve que le mot est déjà dans la table de la base de données.

Répondre

2

En supposant que vous avez une clé unique sur le mot - en utilisant insert ignore pourrait faire l'affaire.

+0

Merci l'homme, a travaillé comme un charme :) –

1

du haut de ma tête, je pense à:

if not exists(Select 1 from <Table> where word = 'theWord') 
Begin 
    --//do your insert 
End 

maintenant c'est dans Sql Server si je ne suis pas sûr des différences de MySql. laissez-moi savoir si cela aide.

+0

Merci pour l'essai. Je pense que cela fonctionnerait si je jouais assez avec, mais la syntaxe est un peu éteinte et l'erreur n'était pas évidente. L'idée d'ignorer l'insert fonctionne très bien pour mysql - personnellement, je suis moi-même un serveur SQL, mais haha. –

Questions connexes