生成22位唯一码/FID(并发可用)
-- ================================================
/*
用途:生成新的主键FID
作者:生成22位唯一的数字 并发可用
*/
-- ================================================
ALTER FUNCTION [dbo].[ufn_GenerateUniqueID]
(@LengthNo int = 22, @RandomNum int = 0)
RETURNS varchar(30)
WITH EXEC AS CALLER
AS
BEGIN
-- 返回值
DECLARE @RetValue VARCHAR(50)
declare @DatetimeString varchar(14)
declare @randomString varchar(50)
Select @DatetimeString = convert(varchar(8), getdate(), 112) + replace(convert(varchar(8), getdate(), 114), ':','')
set @randomString = Right(Replicate('0',@LengthNo - 14) + cast(@RandomNum as varchar(10)), @LengthNo - 14)
set @RetValue = @DatetimeString + @randomString
-- 返回
RETURN @RetValue
END
/// <summary>
/// 生成22位唯一的数字 并发可用
/// </summary>
/// <returns></returns>
public static string GenerateUniqueID()
{
System.Threading.Thread.Sleep(1); //保证yyyyMMddHHmmssffff唯一
Random d = new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0));
string strUnique = DateTime.Now.ToString("yyyyMMddHHmmssffff") + d.Next(1000, 9999);
return strUnique;
}
string FMainTraceCode=GenerateCode.GenerateUniqueID().ToString(); 生成22位唯一码