我们要求记录一些每年从外部来源续订的正式收据(想想一些银行用例)。因此,我们将主键作为收据编号和其他字段(如issue_date
,其他等等)。
到目前为止,我们的应用程序逻辑将更新以前的收据。但是现在我们想要版本号。列添加默认值为0,随后具有相同收据编号的事务将被赋予递增版本。
对于示例,receipt_no 1将作为
进行交易receipt_no - > 1,version_no - > 0和下一个相同的收据:
receipt_no - > 1,version_no - > 1。
因此我的问题是如何正确设计表格?我是否使用复合键作为版本号?这个逻辑是否可以很容易地用Java JDBC代码进行数据访问?请让我知道您的意见。
答案 0 :(得分:1)
在表格上实现自动递增的主键(这通常是一个好主意)。
在receipt_no, version_no
上创建唯一索引。
添加before insert
触发器,以便在插入时确定新的version_no
。
这假设您没有定期手动更改这两个字段中的任何一个。