Bonjour
J'ai une table très simple que j'ai fait pour des test
J'ai ajouté un paquet de données dans la table pour tester et ensuite j'ai procédé à des suppressions aléatoires afin de garder certaines lignes. Ensuite, j'ai rouler la commande reseed afin de repartir à 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE [dbo].[TestInsert]( [ID] [int] IDENTITY(1,1) NOT NULL, [SomeData] [nchar](10) NULL, CONSTRAINT [PK_TestInsert] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
J'ai créer ensuite une storedproc qui va faire des insert dans la table.
J'obtient des erreurs de duplication de clef primaire quand je fais des insert??? Pourquoi SQL Server n'est pas capable de comprendre que que si il y a déjà une valeurs 4 dans la colonne ID et que 5 est libre, il devrait continuer la séquence à 5 ? (Dans ma table, j'ai laissé les ligne avec ID 4, 10, 11, 12, 15 pour tester)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO TestInsert (SomeData) VALUES (N'TOTO')
Mon but ici était de venir remplir les trous laissé par des delete sur les lignes dans la table.
Est-ce possible de faire en sorte que SQL ne génére pas d'erreur de duplication de clef. Ce qui est bizarre est que si je roule la storedproc plusieurs fois, ca finit par passer au prochain ID disponible.
Merci de votre aider
Partager