ID|RID|SID|Name 2| 1 | 2 |BetaID是自动递增的唯一的,不是这里的问题。RID是将数据集分组在一起,我需要一种方法来使每个RID‘组’的SID唯一。这种结构是正确的,我预计有人会说“把它分成多个表”,这在这里不是一个选项(这是分类分类)。我有获取下一个值的代码:SELECT IFNULL(MAX(SID),0)+1 AS NextVal FROM t WHERE RID=1,问题是在插入新记录时如何使用该值?
在这个问题上我有点困惑...出于同样的原因,我们使用事务,在应用我们的逻辑和更新数据库中的行之前,我们当然会用LOCK in SHARE模式选择它。但是我的问题是,如果有一个数值的内联更新查询:即:这样可以在不加锁行/使用事务的情况下始终提供准确的值吗如果该查询与事务中的其他逻辑一起使用(对于其他查询来说是“必需的”),该怎么办?
数据库为MySQL,ID列为int(11) not null auto_increment主键。我使用PrimaryKeyType.Native作为ID属性。我的应用程序是多线程的,但如果我没记错的话,当所有这些都出错时,只有一个线程在写入数据库。我没有任何标记为易失性的东西,也没有阻止多线程访问数据库的锁,但我假设Castle ActiveRecord会在合适的地方加锁。