Mysql - 存档数据库和维护引用

时间:2011-10-23 22:27:37

标签: mysql

我有一张桌子可以存放杂货信息,例如:

id
typeid
groceryname
grocerydesc

每晚我将该表复制到一个新表中进行存档。 typeid字段引用第二个表,其中包含杂货类型选项:

id
typename

然后在杂货店表中我引用所选类型的id。我的问题是,一旦归档了如果在杂货类型表中更新了typename会发生什么?例如,假设在杂货类型表中有一个苏打水条目,然后存档。现在这个人把苏打水变成了水,现在档案中的所有条目都提到水是不正确的。处理这个问题的最佳方法是什么?我是否会获取类型名称并将其与杂货条目一起归档而不是类型ID?但是后来我通过文本而不是数值查询归档表,这不会更慢吗?或者我只是告诉他们你是否更改它,它还会更新存档表中的列表?

1 个答案:

答案 0 :(得分:0)

这取决于您在表格中设置ON UPDATE clausole的方式以及表格中的引擎类型。例如,如果设置ON UPDATE CASCADE并且表是innodb,如果更新主表中的值,则值也会在引用的表中更新。

您可以在此处详细了解此类行为:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html