【发布时间】:2010-11-08 23:50:06
【问题描述】:
我正在制作一个发票系统,支持多个子公司,每个子公司都有自己的一组发票号码,因此我有一个主键为 (Subsidiary, InvoiceNo) 的表
我不能使用 MySQL 自动增量字段,因为它会不断地为所有子公司增加相同的计数。
我不想为每个子公司制作单独的表格,因为会根据需要添加新的子公司...
我目前正在使用“Select Max (ID) Where Subsidiary = X”,从我的表中并根据此添加发票。
我正在使用nHibernate,并且Invoice插入在InvoiceItem插入之前,因此如果Invoice插入失败,InvoiceItem将不会被执行。但相反,我会捕获异常,重新检索 Max(ID) 并重试。
这种方法有什么问题?如果有的话,还有什么替代方案?
询问的原因是因为我阅读了有关此问题的答案之一:Nhibernate Criteria: 'select max(id)'
【问题讨论】:
标签: c# database nhibernate primary-key