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