SQL Server Définir la variable si il existe d'autre insérer dans la table
Je suis à la recherche d'un moyen plus efficace de mener à bien cette tâche. J'ai besoin de définir une variable égal à un ID si elle existe, et si l'insérez pas et puis définissez la variable de l'identité insérée. Je peux accomplir cela en procédant de la manière suivante:
@VariableName --sent through to stored procedure
DECLARE @VariableID [int]
IF EXISTS(SELECT VariableID FROM VariableTable WHERE VariableName = @VariableName)
SET @VariableID = (SELECT VariableID FROM VariableTable WHERE VariableName = @VariableName)
ELSE
INSERT INTO VariableTable(VariableName) VALUES(@VariableName)
SET @VariableID = SCOPE_IDENTITY();
END
Cependant, il semble inefficace pour exécuter la même requête à deux reprises (vérifiez s'il existe et si elle ne définissez la variable)
Juste à la recherche de suggestions sur la meilleure façon d'accomplir cette tâche.
OriginalL'auteur jon3laze | 2012-01-31
Vous devez vous connecter pour publier un commentaire.
Essayer :
OriginalL'auteur Mithrandir
J'ai testé cet extrait et il s'exécute correctement:
OriginalL'auteur ron tornambe
Ici un lite modification @Mithrandir réponse. Vous pouvez utiliser
TOP 1
que vous aider à accélérer le résultat lorsque vous n'êtes pas comparer par rapport à champ unique. par exemple,OriginalL'auteur Jaider
Essayez ceci:
Alors si vous avez besoin de l'id vous devez définir la variable @@IDentity. Je pense que c'est plus efficace que vous n'êtes pas faire un troisième requête, mais tout simplement d'obtenir le dernier ID inséré.
OriginalL'auteur Eric
Essayer cette amusante exception. Rappelez-vous il n'y a pas de début et de FIN, de sorte que la déclaration suivante après que le SI doit être conditionnelle. Maintenant, demandez-vous pourquoi la première variable existe:
OriginalL'auteur Simon Hughes