O objetivo deste artigo e demonstra o IDENTITY e algumas de suas conseqüências.

Não vou discutir boas praticas ou ideologias de modelagem. 

 

 

Aconselho firmemente a leitura dos artigos :

 

https://docs.microsoft.com/pt-br/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-tables-identity#allocation-of-values

https://docs.microsoft.com/pt-br/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-tables-identity#what-is-a-surrogate-key

https://www.google.com/search?q=sql+server+IDENTITY&oq=sql+server+IDENTITY+&aqs=chrome..69i57j0i7i30l6j69i60.5792j0j4&sourceid=chrome&ie=UTF-8

 

 

 

Vamos lá....

 

-- Criaremos a seguinte tabela :

CREATE TABLE teste(

 

[id] [bigint] IDENTITY(1,1) NOT NULL,

 

[status_descricao] [varchar](40) NULL,

 

) ON [PRIMARY]

 

GO

 

 

-- inserindo os dados :

INSERT INTO [dbo].[teste]([status_descricao])  VALUES ('teste1')

INSERT INTO [dbo].[teste]([status_descricao])  VALUES ('teste2')

INSERT INTO [dbo].[teste]([status_descricao])  VALUES ('teste3')

INSERT INTO [dbo].[teste]([status_descricao])  VALUES ('teste4')

INSERT INTO [dbo].[teste]([status_descricao])  VALUES ('teste5')

GO

 

 

-- vendo o resultado.

select * from [dbo].[teste]

 

-- VAMOS BAGUNÇAR O CORETO

delete from [teste] where status_descricao='teste3'

 

-- vendo o resultado.

select * from [dbo].[teste]

 

 

/*

   AGORA QUE O BICHO PEGA.

 

Vamos lá como você poderia incluir o teste3 com o id 3 ?

 

Para isso teríamos que usar o SET IDENTITY_INSERT que é o tipo de tranqueira que considero para os iniciantes andar sobre gelo fino.

Se você leu os artigos que aconselhei no inicio vai entender melhor.

 

Mas se você é novato e esta sofrendo depois do horário então vai ai a solução.

 

 

SET IDENTITY_INSERT [teste]  ON

INSERT INTO [dbo].[teste]([id],[status_descricao])  VALUES (3,'teste3')

SET IDENTITY_INSERT [teste] OFF

 

*/

 

Agora quando você receber a mensagem  sql error Msg 8101 vai entender.