Array
(
)

Problema com Indice unique e Campo Identify

Seu-madruga
   - 04 ago 2004

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:

Citação:
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

Marcus.magalhaes
   - 04 ago 2004

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,