pea*_*ace 5 .net c# sql-server
public int GenPurchaseOrderNum()
{
Random random = new Random();
_uniqueNum = random.Next(13287, 21439);
return UniqueNum;
}
Run Code Online (Sandbox Code Playgroud)
我从数据库中的PONumber列中删除了唯一约束,因为员工只应在设置交易时生成PO#.否则,PO#将为0.
PO号用于具有唯一约束,这会强制员工在所有情况下生成PO,因此db不会抛出唯一约束错误.
由于我删除了唯一约束,任何报价都没有PO将带有0值.否则,为PO#生成唯一值.但是,我没有db中的唯一约束,这使我很难知道应用程序生成的PO#是否唯一.
我该怎么办?
我希望我的问题很清楚
Ste*_*ard 11
GUID在开销方面有点高.具体来说,听起来你需要一个人类可读的PO#号码,这使得GUID不切实际.我更倾向于使用以下场景.
这是20公尺的视野.
Pan*_*hra 11
每次执行新的Random()时都会初始化.这意味着在紧密循环中,您可以多次获得相同的值.您应该保留一个Random实例并继续在同一个实例上使用Next.
//Function to get random number
private static readonly Random getrandom = new Random();
private static readonly object syncLock = new object();
public static int GetRandomNumber(int min, int max)
{
lock(syncLock) { // synchronize
return getrandom .Next(min, max);
}
}
Run Code Online (Sandbox Code Playgroud)
UPDATE seqnces SET sequence = sequence+1 OUTPUT INSERTED.sequence WHERE key = 'somekey'更新
使用SQL Server 2008及更高版本,您可以使用唯一的筛选索引作为不等于0的所有内容的约束:
create unique index idxTbaleUniquePoNumber
on <table> (po_number)
where (po_number > 0);
Run Code Online (Sandbox Code Playgroud)
有点像吃蛋糕和吃蛋糕......
| 归档时间: |
|
| 查看次数: |
1638 次 |
| 最近记录: |