重新设计MySQL表的主键

时间:2013-12-22 16:35:39

标签: java mysql sql

我们要求记录一些每年从外部来源续订的正式收据(想想一些银行用例)。因此,我们将主键作为收据编号和其他字段(如issue_date,其他等等)。

到目前为止,我们的应用程序逻辑将更新以前的收据。但是现在我们想要版本号。列添加默认值为0,随后具有相同收据编号的事务将被赋予递增版本。

对于示例,receipt_no 1将作为

进行交易
  

receipt_no - > 1,version_no - > 0和下一个相同的收据:

     

receipt_no - > 1,version_no - > 1。

因此我的问题是如何正确设计表格?我是否使用复合键作为版本号?这个逻辑是否可以很容易地用Java JDBC代码进行数据访问?请让我知道您的意见。

1 个答案:

答案 0 :(得分:1)

在表格上实现自动递增的主键(这通常是一个好主意)。

receipt_no, version_no上创建唯一索引。

添加before insert触发器,以便在插入时确定新的version_no

这假设您没有定期手动更改这两个字段中的任何一个。

相关问题