INSERT INTO COM SELECT

ATSILVA 24/11/2017 12:35:51
#478093
Olá, preciso duplicar registro na tabela para que o usuário possa aproveitar o cadastro do produto sem ter que digitar tudo novamente por isso criei um botão DUPLICAR na tela.
O problema é que na tabela existe um campo PRIMARY KEY, AUTOINCREMENT e quando executo o código abaixo da erro por que ele tenta incluir o novo registro com a mesma chave primaria.
Gostaria de saber se existe um jeito de especificar no comando para criar uma chave primaria automaticamente assim como é feito quando se inclui um novo cadastro.

INSERT INTO produtos SELECT FROM produtos WHERE ProdutoID=[ô][Ô] & cProdutoID & [Ô][ô] AND LojistaID=[ô][Ô] & cLojistaID & [Ô][ô]

PS1: Utilizo VB.NET 2013 com o MySQL.
GUIMORAES 24/11/2017 13:41:42
#478095
Citação:

:
Olá, preciso duplicar registro na tabela para que o usuário possa aproveitar o cadastro do produto sem ter que digitar tudo novamente por isso criei um botão DUPLICAR na tela.
O problema é que na tabela existe um campo PRIMARY KEY, AUTOINCREMENT e quando executo o código abaixo da erro por que ele tenta incluir o novo registro com a mesma chave primaria.
Gostaria de saber se existe um jeito de especificar no comando para criar uma chave primaria automaticamente assim como é feito quando se inclui um novo cadastro.

INSERT INTO produtos SELECT FROM produtos WHERE ProdutoID=[ô][Ô] & cProdutoID & [Ô][ô] AND LojistaID=[ô][Ô] & cLojistaID & [Ô][ô]

PS1: Utilizo VB.NET 2013 com o MySQL.



Bom, se o campo é auto incremento, você não pode informar ele no seu insert!
Ex:

Estrutura da Tabela.
  

Id - Chave Primaria
Nome - Varchar(200)
preco - Numeric(15,10)



No seu insert, você deve fazer assim:


Insert into produtos (nome, preco) select nome,preco from produtos where id .......
ATSILVA 24/11/2017 14:28:10
#478097
A tabela possui muitos campos!
Não tem como fazer, sem ter que especificar todos os campos da tabela?
Tipo, informar algum comando ou alguma alteração na sintaxe do INSERT abaixo que retire o campo AUTO INCREMENT ?

INSERT INTO produtos SELECT FROM produtos WHERE ProdutoID=[ô][Ô] & cProdutoID & [Ô][ô] AND LojistaID=[ô][Ô] & cLojistaID & [Ô][ô]
OMAR2011 24/11/2017 15:23:44
#478098
ATSILVA acho que você está com febre e muito alta.
Está querendo fazer ao contrário dos demais, a não
duplicação de regsistro.
LUIS2014 24/11/2017 15:43:47
#478099
da pra fazer sim
só desativar, fazer seu insert e ativar novamente...

SET IDENTITY_INSERT [ô]SuaTabela[ô] ON
insert into .....
SET IDENTITY_INSERT [ô]SuaTabela[ô] OFF

bom, isso no sql server, mysql não sei...
Tópico encerrado , respostas não são mais permitidas