Ir para conteúdo

POWERED BY:

Arquivado

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

Rodrigo1

Transformar PK já existente em auto_increment

Recommended Posts

Ae galera...

 

Fiz um bd pra minha aplicacao,

A tabela pedidos tem o campo Id que é a PK

 

Qdo criei achei que nao precisaria auto increment ...

 

 

Agora estou adicionando os ids somando via programacao, mais surgiu a necessidade de auto increment...

Alguem sabe como posso transformar uma PK ja existente em PK com auto increment?

Estou tentando duplicar um pedido e da erro no PK... diz que nao pode ser igual

INSERT INTO Pedidos (id, idCliente, IdProduto, Tamanho,
 Quantidade, Valor, Taxa, Data, eRua, eCidade, eTelDoLocal,
 eBairro, eCEP, cRua, cCidade, cTelDoLocal, cBairro, cCep,
 FormaPagamento, CondicaoPagamento, NumeroCartaoCredito,
 ValidadeCartaoCredito, CodigoCartaoCredito, NomeCartaoCredito,
 LiberadoEntrega, LiberadoCobranca, OBS, HoraEntrega,DataPedido,
 ParaQuem, eSala, ObsHoraEntrega, UsuarioManaca, Custo, eNomeLocal,
 cNome, cSobreNome, Impress, CartaoFaixa, LiberadoVendas, ValorTotal)
 SELECT Id , idCliente, IdProduto, Tamanho,
 Quantidade, Valor, Taxa, Data, eRua, eCidade, eTelDoLocal,
 eBairro, eCEP, cRua, cCidade, cTelDoLocal, cBairro, cCep,
 FormaPagamento, CondicaoPagamento, NumeroCartaoCredito,
 ValidadeCartaoCredito, CodigoCartaoCredito, NomeCartaoCredito,
 LiberadoEntrega, LiberadoCobranca, OBS, HoraEntrega,DataPedido,
 ParaQuem, eSala, ObsHoraEntrega, UsuarioManaca, Custo, eNomeLocal,
 cNome, cSobreNome, Impress, CartaoFaixa, LiberadoVendas, ValorTotal FROM Pedidos WHERE Id=2

Procurei no google e só fala de como criar e tal...

 

Valew galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava pensando em algoi assim

 

Alter table pedidos set pedidos.id = auto_increment
e assim

USE CRM
Alter table pedidos 
Alter column id identity

mais ja deu erro...hehe

 

Ainda naoi achei nada no google!

se alguem puder ajudar....fico agradecido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tem algumas questões técnicas neste caso... a primeira é: esta tabela já está em produção (seu sistema já está no ar, já existem registros válidos nela, etc...)? Se não estiver, a solução mais simples é : dropar a tabela toda e recriar ela corretamente.

 

Agora, se estiver, acho que você poderia pensar em fazer algo assim: criar uma tabela temporaria com a mesma estrutura da sua tabela atual e jogar nela todos os registros... depois, dropar esta tabela que está errada e recriá-la, pondo um campo a mais com a chave autoincremental que precisa como pk e os outros campos iguais a tabela original, e gravar ela com os dados salvos na temporária. Assim, você não perderia os códigos e as referências já existentes com as demais tabelas do sistema.

 

É uma sugestão, talvez haja meios melhores para isso.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

é...

pensei am algo assim tbm....

 

pois ja esta em producao e existem varios dados...

 

como faria para criar essA TABELA TEMPORARIA?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O jeito mais simples de criar esta temporária seria:

 

select campo1, campo2, .., campoN
Into Tabela_Temp
from tabela

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja criei aqui Chrnos!

 

Valew...

 

Agora estou com outro problema

 

Quero inserir os registro da tabela antiga nba nova...

 

O problema é que da erro

Cannot insert explicit value for identity column in table 'PedidosNEW' when IDENTITY_INSERT is set to OFF.
Daí eu achei no google um codigo pra resolver isso

 

mais ta dando o mesmo erro

 

SET IDENTITY_INSERT PedidosNEW ON
Aqui ele retorna -Command(s) completed successfully.

 

dizendo que deu certo...

 

mais dai eu tento fazer o insert com select e ele dá aquele erro novamente

Cannot insert explicit value for identity column in table 'PedidosNEW' when IDENTITY_INSERT is set to OFF.

Se tiver alguma ideia...

valew ai!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a estrutura das duas tabelas para analise.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

As duas tabelas sao iguais...

Id int

IdCliente int

IdProduto int

Tamanho nvarchar(50)

Quantidade int

Custo smallmoney

ValorTotal smallmoney

Valor smallmoney

Taxa smallmoney

Data smalldatetime

CartaoFaixa nvarchar(500)

ParaQuem nvarchar(100)

eNomeLocal nvarchar(100)

eRua nvarchar(200)

eCidade nvarchar(100)

eTelDoLocal varchar(150)

eBairro nvarchar(100)

eCEP nvarchar(15)

eSala nvarchar(100)

Impress nvarchar(100)

cNome nvarchar(100)

cSobreNome nvarchar(100)

cRua nvarchar(100)

cCidade nvarchar(100)

cTelDoLocal nvarchar(30)

cBairro nvarchar(100)

cCEP nvarchar(30) Checked

FormaPagamento nvarchar(50)

CondicaoPagamento nvarchar(50)

NumeroCartaoCredito nvarchar(100)

ValidadeCartaoCredito nchar(5)

CodigoCartaoCredito nchar(3)

NomeCartaoCredito nvarchar(200)

DataPedido smalldatetime

HoraEntrega nvarchar(50)

ObsHoraEntrega nvarchar(100)

OBS nvarchar(400)

LiberadoEntrega bit

LiberadoVendas bit

LiberadoCobranca bit

EntreguePor nvarchar(100)

DataEntregue smalldatetime

OBSEntregue nvarchar(200)

NomeRecebedor nvarchar(100)

UsuarioManaca nvarchar(100)

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.