插入使用相同的行(相同的主键)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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章