Comment éviter les Doublons pour INSERT en SQL?
J'ai une table nommée:
Delegates
Ce tableau comporte quatre champs:
ID(Auto increment, Primary)
MemberNo, FromYr, ToYr
Je suis d'insertion avec cette requête:
INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)
Les valeurs proviennent de la saisie de l'utilisateur. Un membre peut être un Délégué pour toute année, c'est pourquoi je leur permets d'entrée comme ils veulent. Mais maintenant le problème est qu'ils peuvent insérer, à tort, un membre de la même année, plus de 2 fois.
S'il vous plaît aidez-moi que puis-je faire ici?
Qu'est-ce que le naturel unique de la clé alors? Pas la valeur d'IDENTITÉ
pas de clé unique est fait.
Ajouter la clé unique de la première
eh bien, ne peut pas être fait.
pas de clé unique est fait.
Ajouter la clé unique de la première
eh bien, ne peut pas être fait.
OriginalL'auteur barsan | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
Avant l'insertion de vérifier s'il existe un enregistrement avec les mêmes valeurs:
Ne le savions pas, de le mettre à l'intérieur de la transaction serait de réparer cela?
Merci beaucoup cela fonctionne bien... j'apprécie vraiment..
non, il ne sera pas, sauf si vous utilisez une performance meurtre de verrouillage de la stratégie
merci pour les conseils, va rappelez-vous que
OriginalL'auteur gzaxx
Utilisation FUSION
OriginalL'auteur gbn
Essayez ceci (je n'ai pas vérifié)
OriginalL'auteur Hari Das
Il suffit d'ajouter un index unique sur la colonne, l'insertion de doublons provoquera une erreur. Vous pouvez ensuite l'erreur de le gérer si elle a besoin d'échec gracieusement
OriginalL'auteur mattcornish
faire une procédure stockée qui va d'abord faire une vérification sur la question de savoir si les valeurs sont déjà contenues dans la base de données. si ils arent vous ferez de votre insert. S'ils se contentent de l'ignorer
OriginalL'auteur walsh06
Vous pouvez éviter l'insertion de doublons avec ce simple, une ligne de code:
INSERT INTO Delegates (MemNo, FromYr, ToYr) SELECT @MemNo, @FromYr, @ToYr WHERE NOT EXISTS (SELECT 1 FROM Delegates d WHERE d.MemNo=@MemNo AND d.FromYr=@FromYr)
Si c'est une haute charge de l'environnement où une autre commande peut insérer le double alors que cette commande est en cours d'exécution, vous pouvez utiliser le
WITH(HOLDLOCK)
soupçon.OriginalL'auteur Doug S