Mise à jour de l'auto incrémentation du clé primaire [Résolu]

- - Dernière réponse :  samouhanadia - 3 mai 2013 à 21:41
Bsr a tous
Je suis encore débutante en Java,je suis en train de faire une application sous NetBeans avec une Base de donnée sous Sql server 2005.
SVP j'aimerai avoir la syntaxe sql qui permet de réinitialiser l’auto-incrément après avoir fait une mise a jour sur une table
Exp: si j'ai comme clé les valeurs allant de 1 à 5 et après suppression de l'enregistrement ou la clé est 3 il faudrait que l’enregistrement de clé 4 ait maintenant la clé 3.......
ou même une autre méthode qui me permet de réinitialiser mon clé primaire aprés les opérations faite sur la Base de donnée!!!!
j'ai consulter bcp des forums mais en vain!!!!!
Svp aidez moi c'est urgent
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Dernière intervention
23 janvier 2016
1
Merci
Salut,

une PK peut très bien avoir la suite suivante avec des trous :
1, 2, 3, 5, 6, 100, 200, 1000, 1001, 1002

Ceci dit,
voici les instructions pour manipuler finement l'ident seed d'une colonne IDENTITY

/* Crée un identity qui démarre à 1 et s'incrémente de 1 */
CREATE TABLE #T(_id int IDENTITY(1,1), _data varchar(10))

/* Ajoute 3 valeurs */
INSERT INTO #T VALUES('ID 1');
INSERT INTO #T VALUES('ID 2');
INSERT INTO #T VALUES('ID 3');

SELECT * FROM #T

-- Supprime l'ID 2
DELETE FROM #T WHERE _id = 2

SELECT * FROM #T

-- ----------> Force la réinsertion à l'id 2
SET IDENTITY_INSERT #T ON
-- <----------

INSERT INTO #T(_id, _data) VALUES(2, 'force 2')

SELECT * FROM #T

-- ----------> 
--  Réactive identity auto
-- <----------
SET IDENTITY_INSERT #T OFF

-- stat sur le seed en cours  pour #T 
SELECT 
identSEED = IDENT_SEED('#T'),
identMIN = MIN($IDENTITY),
identMAX = MAX($IDENTITY) 
FROM #T

-- Change le seed pour redémarrer le compteur à 11
DBCC CHECKIDENT ('tempdb..#T', RESEED, 10);

INSERT INTO #T(_data) VALUES('force 11')

SELECT * FROM #T

DROP TABLE #T


bye...

Merci yann_lo_san 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de yann_lo_san
Commenter la réponse de samouhanadia

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.