在我的办公室里,我有一个远程网络服务器上的订购平台和一个本地生产机器。两个the服务器都访问同一个远程MySQL (InnoDB)数据库。
我的问题是:生产需要几分钟,其中2-3个交易是开放的。在这段时间里,我生成新的发票号码并增加它们。最近的发票编号保存在数据库中的数字-表中。
public Long getNewInvoiceNumber() {
Criteria crit = getSession().createCriteria(Numbers.class);
Numbers n = ((Numbers)crit.uniqueResult());
Long ne
例如,如果我有一个具有单列numbers的表,并且我希望1)按asc/desc order 2 (re)对它们进行排序,则使用该顺序(所以我可以说这个数字是ith最大/最小的)。
如果DB没有row_number函数(例如,MySQL),人们将如何做到这一点?
如果理解正确,则SELECT以未指定的方式返回行的顺序可能不一致。
和类似的东西(在许多类似问题的答案中提出)
SET @num = 0;
SELECT number, @num := @num + 1 as num FROM ... ORDER BY number
这是错误的,因为似乎没有任何保证的时间将被评估的订单。也就是说,它可以
我正在寻找一种生成唯一订单ID的好方法。您是否发现以下代码有任何问题?
int customerId = 10000000;
long ticks = DateTime.UtcNow.Ticks;
long orderId = customerId + ticks;
int orderNumber = orderId.GetHashCode();
在创建订单之前,我将检查该编号在数据库中是否唯一。
public int GenPurchaseOrderNum()
{
Random random = new Random();
_uniqueNum = random.Next(13287, 21439);
return UniqueNum;
}
我从db的PONumber列中删除了唯一约束,因为员工应该只在交易设置时生成P.O. #。否则,邮政信箱编号将为0。
采购订单编号过去具有唯一约束,这会强制员工在所有情况下生成采购订单,这样数据库就不会抛出唯一约束错误。
由于我删除了unique约束,所以任何没有P.O.的引用都将携带0值。否则,将为P.O. #生成唯一值。
所以问题是这样问的:
列出强生百货公司下的每个订单的订单号和订单日期,但不包含天然气系列的订单行。
下面是我已经尝试过的东西,以及它不断给我的错误。所以我知道我应该选择ORDER_NUM和ORDER_DATE,因为这是它要求列出的内容。608是Johnson's百货公司的客户编号,最后一行是我搞不懂的。如何说描述中不包含燃气灶?
SELECT ORDER_NUM, ORDER_DATE
-> FROM ORDERS, PART
-> WHERE CUSTOMER_NUM='608'
-> AND PART.DESCRIPTION