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
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201624 3 mai 2013 à 21:40
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