[ Foro de C# ]

Evitar incrementos de IDENTITY con valores duplicados en SQL Server

25-May-2021 07:56
Weyler Uicab
0 Respuestas

Hola, estoy usando Entity Framework con Visual Studio 2019 para la creacion de un CRUD.

Tengo la siguiente tabla la cual me crea un índice de clave primaria con incrementos de 1,1 con el fin de generar IDs de manera consecutivas.

CREATE TABLE [dbo].[Company](
[CompanyId] [int] IDENTITY(1,1) NOT NULL,
[TaxpayerKey] [nvarchar](15) NOT NULL,
[BusinessName] [nvarchar](120) NOT NULL,
[TaxRegime] [nvarchar](120) NOT NULL,
CONSTRAINT [PK_Company] PRIMARY KEY CLUSTERED
(
[CompanyId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

De igual forma he agregado un segundo indice, para la columna TaxpayerKey, ya que no deberían haber valores duplicados para esta columna:

/****** Object:  Index [IX_TaxpayerKey]    Script Date: 5/25/2021 12:43:52 AM ******/
CREATE UNIQUE NONCLUSTERED INDEX [IX_TaxpayerKey] ON [dbo].[Company]
(
[TaxpayerKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO

Ahora, si trato de insertar dos veces los mismos valores, me sale un error de duplicidad, hasta este punto es correcto, sin embargo observo que el campo CompanyId, se incrementa aun cuando la fila no es insertada,


¿Es posible evitar el incremento de este campo cuando se da la excepción de duplicidad? Esto sucede tanto en SQL Server como en mi código cuando inserto usando Entity Framework.

De antemano les agradezco su tiempo y ayuda.




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...