我需要通过PDO复制记录。 你能救我吗?
答案 0 :(得分:0)
例如;
INSERT INTO `foo` (`name`)
(SELECT `name`
FROM `foo`
WHERE `id` = 1)
简而言之,您需要指定字段名称(不要将主键添加到INSERT
或SELECT
上的字段列表中。)
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');
所以,现在我们有一个带主键的表,所以我们不能“轻易”复制行。
INSERT INTO `dupe`
SELECT * FROM `dupe` WHERE `name` = 'bar'
[Err] 1062 - Duplicate entry '1' for key 'PRIMARY'
啊,好的。让我们指定要复制的值的字段。
我们希望复制第一行,我们会运行;
INSERT INTO `dupe` (`name`)
SELECT `name` FROM `dupe` WHERE `name` = 'bar';
现在我们已经复制了行,但没有复制主键。
mysql> select * from dupe;
+----+------+
| id | name |
+----+------+
| 1 | bar |
| 2 | bar |
+----+------+
2 rows in set