Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kania

Erro em campo auto incremento

Recommended Posts

Olá pessoal,

 

gente criei a seguinte tabela:

 

USE [baseTeste]

GO

/****** Object: Table [dbo].[usuarios] Script Date: 05/05/2010 16:22:31 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[usuarios](

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

[Nome] [varchar](250) COLLATE Latin1_General_CI_AS NOT NULL,

[nvarchar](100) COLLATE Latin1_General_CI_AS NOT NULL,

[senha] [varchar](100) COLLATE Latin1_General_CI_AS NOT NULL,

CONSTRAINT [PK_Usuarios] PRIMARY KEY CLUSTERED

(

[id] ASC

)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

 

GO

SET ANSI_PADDING OFF

 

estou fazendo uma aplicação em .net, porem esta dando o seguinte erro na hora de adicionar registros

 

ERROR [23000] [Microsoft]

[sql Server]Não é possível inserir um valor explícito para a coluna de identidade na tabela 'Usuarios' quando IDENTITY_INSERT está definido como OFF.

 

Agora onde eu verifico esta opção que diz estar definido como OFF?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kania, você esta inserindo um valor para um campo que esta como IDENTITY (no seu caso Id)

Qdo você tiver que fazer um insert nesta tabela você nao precisa passar este campo.... ou se você precisar passar este campo, pode "desligar" o identity:

 

http://msdn.microsoft.com/pt-br/library/ms188059.aspx

 

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá A.jr, obrigado por responder, é assim eu não passo este campo no momento de atualizar e inserir dados, como utilizo normalmente no MySql, porem no MySql ele nunca deu este tipo de erro, quando o campo é auto incremento ele automaticamente me insere os valores de forma seqüencial e pronto, agora aqui no Sql Server parece não ser assim que funciona.

 

No meu form de inserção eu só passo os campos, Nome, Email e Senha, digito os dados na hora que mando inserir da o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Knai, você por uma acaso no insert esta passando o nome dos campos?



insert into usuarios (Nome, Email, Senha)
values ('Junior', 'adjuniordba@googlemail.com', 'senha :P')


insert into usuarios 
values ('Junior', 'adjuniordba@googlemail.com', 'senha :P')


insert into usuarios 
select 'Junior', 'adjuniordba@googlemail.com', 'senha :P'



 

Como você tem um campo autoincremento, nem precisaria, mas faz um teste.... eu rodei a criacao e o insert (no proprio SQL) e foi normal :s

você esta fazendo isso pelo VS? Qual a versao do SQL?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá,

 

Estou com a versão do Sql Server 2005 Express

 

Estou usando para criação o Microsoft Visual Web Developer 2010 Express, na verdade estou aprendendo a trabalhar com a plataforma .net.

 

Para aprender estou usando uma vídeo aula onde o cara esta ensinado criar um DetailsView e um GridView sem mexer no código fonte, criei o BD normal no SQL Server Management Studio Express, colocando a chave primária e o Identity (1,1), no DetailsView eu não apresento o campo ID para que ele seja gerado automaticamente conforme a configuração do Sql, mas na hora de testar o cadastro da este erro que informei, de que Não é possível inserir um valor explícito para a coluna de identidade na tabela 'Usuarios' quando IDENTITY_INSERT está definido como OFF.

 

Ma sonde eu mudo para ON esta configuração?

 

Achei alguns materiasi na net que fala sobre IDENTITY_INSERT ON | OFF, mas todos fala dele para inserir registros no meio de uma tabela que já tem registros e não como se eu pudesse ativar o ele para ON e pronto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite , nao sei c você ja resolvou o seu problemas... estou com um pareciso...

a parte do IDENTITY_INSERT ON | OFF eu resolvi desta forma...

SET IDENTITY_INSERT NOME DA TABELA ON

INSERT INTO [NOME DO BANCO].[dbo].[NOME DA TABELA]

([Codigo]

,[DataAbertura]

 

 

so que no meu caso.. nao consigo fazer o auto incremente funcionar..

c você conseguiu.. da uma ajudinha ai :)

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Ricardo, fera, eu não consegui resolver o problema acima, na verdade como estava fazendo um curso naquele momento, acabei pegando um outro projeto para desenvolver e deixei o curso de lado por um momento até terminar este projeto, assim que o projeto terminar vou retornar ao curso de .Net, ai vou ver como consigo resolver tal questão.

 

De qualquer forma valeu a dica.

Qualquer coisa estamos ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kania,

 

pegando o msm exemplo de criacao de tabela, fiz o seguinte:


select * from [Usuarios]

Nenhum registro na tabela

 



insert into [Usuarios]
values ('Junior', 'adjuniordba@googlemail.com', 'senha')

insert into [Usuarios]
values ('A.JR', 'adjuniordba@googlemail.com', 'senha')

select * from [Usuarios]

Dois registros com o campo ID 1 e 2

 

 

Id Nome Email Senha

1 Junior adjuniordba@googlemail.com senha

2 Junior adjuniordba@googlemail.com senha

 

 


SET IDENTITY_INSERT [Usuarios] on
insert into [Usuarios] (Id, Nome, Email, Senha)
values (33, 'Junior', 'adjuniordba@googlemail.com', 'senha')
SET IDENTITY_INSERT [Usuarios] OFF

select * from [Usuarios]

FORCEI o ID para o numero 33!!!

Perceba que agora no meu insert eu passo todos os campos!

 

Resultado:

 

Id Nome Email Senha

1 Junior adjuniordba@googlemail.com senha

2 Junior adjuniordba@googlemail.com senha

33 Junior adjuniordba@googlemail.com senha

 

Se ainda tiver duvidas, pode postar http://forum.imasters.com.br/public/style_emoticons/default/devil.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.