Recherche du premier identifiant manquant (trou) d'une table

Contenu du snippet

Ce script sert à optimiser l'insertion d'enregistrements dans une base. La fonction renvoie (dans le cas present pour la table patient) le premier identifiant manquant (PK) dans la table, ainsi plus de discontinuités dans les IDs ...
Cordialement Djhal

Source / Exemple :


CREATE FUNCTION Find_Id() RETURNS INT
AS
BEGIN
DECLARE @cpt INT
DECLARE @tmp INT

DECLARE curseur CURSOR FOR 
(
	SELECT id_pat 
	FROM patient
)

OPEN curseur

FETCH NEXT FROM curseur
INTO @cpt

IF @cpt!=NULL
BEGIN
          SET @tmp=@cpt-1
END
ELSE
BEGIN
          SET @tmp=0
END

WHILE @@FETCH_STATUS=0
BEGIN	
	IF @tmp+1!=@cpt
	BEGIN
		CLOSE curseur
		DEALLOCATE curseur
		RETURN @tmp+1
	END

	SET @tmp=@cpt

	FETCH NEXT FROM curseur
	INTO @cpt
END

CLOSE curseur
DEALLOCATE curseur

RETURN @tmp+1

END

Conclusion :


Afin d'optimiser le script :
- on pourrait faire passer le nom de la table en parametres ( ds le code patient ecrit en dur)
- ordonner la selection des enregistrements

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.