Hello,
Au hasard du net, je suis tombé sur un code qui m'a l'air plutôt élégant pour s'assurer d'avoir une suite continue de numéro sans devoir s'emmerder à gérer les trous et sans devoir passer le niveau d'isolation des transactions sur serializable.
Voici le code :
Où Invoices serait une table dans ce goût-là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 while 1=1 begin declare @new_nr int select @new_nr = max(InvoiceNr) + 1 from dbo.Invoices if @new_nr is null set @new_nr = 1 insert dbo.Invoices (InvoiceNr, ...) values (@new_nr, ...) if @@rowcount = 1 break end
Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE [Imports].[Invoices_Numbers] ( [InvoiceNumber] [INT] IDENTITY(1, 1) NOT NULL ,[Deleted] [BIT] NOT NULL ,[Used] [BIT] NOT NULL, CONSTRAINT [PK_Invoices_Numbers] PRIMARY KEY CLUSTERED ( [InvoiceNumber] ASC ) ) ON [PRIMARY]
Partager