04/08/2004

Problema com Indice unique e Campo Identify

Eu tenho uma tabela com dois campos, código e descrição. O campo código eu criei com identify e descrição unique constraint. Quando insiro um registro que viola o indice, ele dá o erro corretamente, mas quando vou insirir um registro corretamente, a sequencia do código não fica correta. Exemplo:

Código Descrição
----------------------
1 Teste -> Ok !
2 Teste -> Erro, registro não gravado
3 Outro Teste -> O código está incorreto, era para ser 2.

Abaixo segue o código SQL da tabela:
CREATE TABLE [dbo].[SCA_GRUPOS] ( [CGRUPO] [smallint] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [DGRUPO] [varchar] (40) COLLATE Latin1_General_CI_AS NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[SCA_GRUPOS] WITH NOCHECK ADD CONSTRAINT [PK_SCA_GRUPOS] PRIMARY KEY CLUSTERED ( [CGRUPO] ) ON [PRIMARY] GO ALTER TABLE [dbo].[SCA_GRUPOS] WITH NOCHECK ADD CONSTRAINT [IX_SCA_GRUPOS] UNIQUE NONCLUSTERED ( [DGRUPO] ) ON [PRIMARY]


O que pode estar errado ?

Obrigado pela atenção.

[]´s


Seu-madruga

Respostas

04/08/2004

Marcus.magalhaes

Boa tarde, blz?

Não tem nada de errado, o q acontece é q quando vc faz o insert e o mesmo falha devido a duplicate key, o sql já atualizou o registro onde é armazenado o valor para o identity, sendo assim aquele valor está perdido.

Porém, mesmo isso acontecendo, é melhor que vc não tenha uma sequencia correta do q tentar implementar um sequenciamento manual, que irá honerar o banco, com leituras e gravações, causando uma perda de performance e tb o risco de um duplicate key, pq 2 ou mais conexões pegaram o mesmo id.

Att,


Responder Citar