【问题标题】:Archiving data in mysql在 mysql 中归档数据
【发布时间】:2011-06-22 04:49:30
【问题描述】:

编辑

让我调整一下我的问题,如果我编写了一个将当前 mysql 表复制到存档表的脚本,然后从原始表中删除记录,我如何确保保留自动增量?我需要确保归档表中的主键不重复。

【问题讨论】:

  • 这个问题与your previous one有何不同?
  • @Matt Ball 是的,我不擅长讲笑话。
  • 是什么让你认为源表的主键必须匹配归档表的主键?
  • @Michael J.V. 我只是说我想保持自动递增的值。因此,如果活动表中的主自动递增键是 35,那么我将它们移动到归档表并删除活动表中的行,活动表中的下一个值应该是 36。我需要保持它们相同,因为在存档表中,密钥在其他表中被引用,我需要维护该引用以用于报告目的。

标签: php mysql archive


【解决方案1】:

无需保留归档表中的主键位置。只需确保在复制到归档表时使用 INSERT IGNORE INTO...,您就不必担心归档表中的重复条目。然后只需对归档表中的主键列使用唯一约束。您的归档表上不应有自动递增的主键。

【讨论】:

  • 感谢您的回答。我如何确保活动表具有正确的键?也许我在想这个?当我从活动表中删除行时,添加到活动表的下一行应该从下一个自动增量值开始。只是担心如果发生某些事情,主键值会混淆。因为当我从存档表运行报告时,它需要加入其他表,因此需要保留主键。
  • @John - 如果您截断表,MySQL MYISAM 表将重置增量值,但如果您只是删除行,它将保留该值。因此,如果它有 1000 个条目,并且您删除了这 1000 个条目,则下一个自动增量应该仍然是 1001,而不是 1。您也可以使用“ALTER TABLE tableNameAUTO_INCREMENT =101”手动设置该值,其中 101 是您的值。
猜你喜欢
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
相关资源
最近更新 更多