插入到使用相同的行(相同的主键)MySQL PHP PDO


insert into using same row(same primary key) mysql php pdo

INSERT INTO courses1 (sys_id,name, location) 
SELECT *
FROM courses 
WHERE sys_id= $sysid

我有上面的两个表格,我想在课程 1 中插入我在课程中的内容。但是我遇到了sys_id问题,因为我得到了Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'' in所以我所做的是在 courses1 中添加了一个名为 system_id 的列,但随后我收到另一个错误,说列不匹配。

Tried

INSERT IGNORE INTO但结果不是我所期望的。我想要的结果是每次进行交易时都有从课程到课程1的数据。我希望数据不会被覆盖。

  1. 插入同一行(同一主键(时insert into的最佳解决方案是什么?

UPDATE

我的目标是备份数据(历史数据(。我想在编辑数据之前记录数据。基本上我正在做的是在更新之前将数据插入另一个表中

这个问题是一个完美的例子,它证明了这样一个事实,即要给出答案,人们必须了解问题的上下文,而不仅仅是写一个由问题中的某个关键字触发的自动帖子。

如果需要历史记录表,它必须具有与主表不同的结构。至少它应该有一个来自主表的 id 的非唯一键。

因此,创建一个结构相同的历史记录表,但添加一个main_id字段。这给了你一个这样的结构

id
manin_id
name
location

然后,要将记录添加到历史记录表中,

INSERT INTO courses_history SELECT NULL, * FROM courses  WHERE sys_id=?

您可能还希望为main_id字段添加索引(非唯一(。

这样,它将允许从主表中存储同一行的多个"副本"。

若要获取最后一个副本,需要如下所示的查询:

SELECT * FROM courses_history WHERE sys_id=? ORDER BY id desc