Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

No MySQL, posso copiar uma linha para inserir na mesma tabela?


Usei a técnica de Leonard Challis com algumas mudanças:
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

Como uma tabela temporária, nunca deve haver mais de um registro, então você não precisa se preocupar com a chave primária. Defini-lo como null permite que o MySQL escolha o próprio valor, portanto, não há risco de criar uma duplicata.

Se você quiser ter certeza de que está obtendo apenas uma linha para inserir, adicione LIMIT 1 ao final da linha INSERT INTO.

Observe que também anexei o valor da chave primária (1 neste caso) ao nome da minha tabela temporária.