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

Signaler
-
 samouhanadia -
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

2 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
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 bien :)