/ / ¿Cómo duplicar un registro a través de DOP? - php, mysql, pdo

¿Cómo duplicar un registro a través de PDO? - php, mysql, pdo

Necesito duplicar un registro a través de DOP. ¿Me puedes ayudar?

Respuestas

0 para la respuesta № 1

Utilizar INSERT ... SELECT

Por ejemplo;

INSERT INTO `foo` (`name`)
(SELECT `name`
FROM `foo`
WHERE `id` = 1)

En resumen, no es necesario que especifique los nombres de los campos (no agregue las claves primarias a la lista de campos en la lista de campos). INSERT o SELECT)

Ejemplo ilustrado

CREATE TABLE `dupe` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

INSERT INTO `dupe` (id, name) VALUES(1, "bar");

Entonces, ahora tenemos una tabla con una clave principal, por lo que no podemos "fácilmente" duplicar filas.

INSERT INTO `dupe`
SELECT * FROM `dupe` WHERE `name` = "bar"

[Err] 1062 - Duplicate entry "1" for key "PRIMARY"

Ah ok Vamos a especificar los campos de los que queremos duplicar valores.

Queremos duplicar la primera fila, corremos;

INSERT INTO `dupe` (`name`)
SELECT `name` FROM `dupe` WHERE `name` = "bar";

Ahora hemos duplicado la fila, pero no la clave principal.

mysql> select * from dupe;
+----+------+
| id | name |
+----+------+
|  1 | bar  |
|  2 | bar  |
+----+------+
2 rows in set