DUPLICAR REGISTRO - PRIMARY KEY

FBGSYSTEMS 16/04/2015 17:05:44
#445961
Boa tarde galera.

Estou tentando duplicar registros no meu sistema. E etou utilizando o seguinte metodo:

  insert into tbl_a select * from tbl_a where condicao 


Porem como não consigo tirar o campo chave primária desta instrução recebo o erro que esta duplicando um registro de chave primaria X.

A solução seria colocar campo a campo que estou inserindo, porém são muitas tabelas que precisarei ter esta função então não sei como fazer.

A idéia era fazer um metodo genérico para atender todos.
Alguem sugere algo para resolver isto ?
NILSONTRES 16/04/2015 18:26:25
#445963
Resposta escolhida
vc quer duplicar um registro com chave primaria, de nenhum modo dará certo, chave primaria não se repete.
Se é o que eu entendi.
MESTRE 17/04/2015 08:26:23
#445979
Opa tente assim, se seu campo de chave primaria for autoincrement vai dar certo :)

    sql = [Ô]INSERT INTO tbl_a(campo2,campo3) Select campo2,campo3  From tbl_a[Ô]
Banco.ExecutaQuery(sql)


só não colocar o campo código
FBGSYSTEMS 17/04/2015 15:12:14
#445985
Nilson, quero criar uma copia do registro.

MESTRE, é isso que eu preciso, porém quero um metodo para duplicar registro de qualquer tabela, então não posso fazer desta forma.

Pensei um pouco aqui e acho que o jeito é assim:

                MySqlCommand cmd = new MySqlCommand([Ô]SHOW COLUMNs FROM anvisa[Ô],conecta.conexao);
MySqlDataReader dr = cmd.ExecuteReader ();


while (dr.Read())
{

if (dr.GetString(dr.GetOrdinal([Ô]Field[Ô])) != [Ô]codigo[Ô]){
// aqui eu monto a string dos campos que serao inseridos e campos selcionados na query
}
}


Pois todas minhas tabelas uso o campo chamado [Ô]codigo[Ô] como chave primaria e é auto increment, ou eu trato pelo campo [Ô]key[Ô] que o Show Columns retorna.
Tópico encerrado , respostas não são mais permitidas