ID|RID|SID|Name 2| 1 | 2 |BetaID是自动递增的唯一的,不是这里的问题。RID是将数据集分组在一起,我需要一种方法来使每个RID‘组’的SID唯一。这种结构是正确的,我预计有人会说“把它分成多个表”,这在这里不是一个选项(这是分类分类)。我有获取下一个值的代码:SELECT IFNULL(MAX(SID),0)+1 AS NextVal FROM t WHERE RID=1,问题是在插入新记录时如何使用该值?
数据库为MySQL,ID列为int(11) not null auto_increment主键。我使用PrimaryKeyType.Native作为ID属性。我的应用程序是多线程的,但如果我没记错的话,当所有这些都出错时,只有一个线程在写入数据库。我没有任何标记为易失性的东西,也没有阻止多线程访问数据库的锁,但我假设Castle ActiveRecord会在合适的地方加锁。