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的数据。我希望数据不会被覆盖。
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] 删除。
我来说两句