我将去年表存档并在每年年初创建一个新表。我想找到一种方法来拥有一张多年的桌子,所以我不必每年手动更换任何东西。列是:行(唯一),日期(主要),col1,col2,col3 ..用户将数据(每列)键入表单。我想要度过一个“岁月”。将使用复合主键(行,年)从年份(日期)填充的列。我还需要主键(行,年(日期))。因此,每年我们都可以从第1行和新年开始。我甚至看过并试过插入更新触发器,但我不认为这是答案。你怎么看?这太模糊了吗?
答案 0 :(得分:0)
我在我的一个Firebird数据库中做了类似的事情(你没有说你正在使用哪个数据库)。首先,你应该有一个自动生成的主键 - 这将使生活更简单。其次,您每年需要一台发电机 - 或者每年需要一个场地的桌子。
在此模型中,您有一个包含两个字段的表:year(主键)和'curvalue'。每年都会插入一个新的元组,如(2012,0)或(2013,0)。您查询此表以查找给定年份的“curvalue”字段的当前值,然后递增curvalue字段并使用您要插入的元组中的递增值。
使用发电机可确保您始终收到唯一的号码;如上所述使用表可能会导致问题,如果一行启动进程然后另一行到达。