1
0
mirror of synced 2025-12-16 18:18:10 +08:00

auto commit

This commit is contained in:
yitter
2021-04-17 23:33:30 +08:00
parent 4d9d0d6220
commit c87f444a60
2 changed files with 55 additions and 0 deletions

9
SQL/README.md Normal file
View File

@@ -0,0 +1,9 @@
# ❄ idgenerator-SQL
## 介绍
这里是在不同数据库中生成雪花ID的脚本。

46
SQL/sqlserver.sql Normal file
View File

@@ -0,0 +1,46 @@
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1.<2E><><EFBFBD><EFBFBD>SQL Server<65><72>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д˽ű<CBBD><C5B1>󣬽<EFBFBD><F3A3ACBD><EFBFBD>SQL Server<65>ġ<EFBFBD><C4A1>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fn_NextSnowId
2.<2E><><EFBFBD>ɵ<EFBFBD>ID = ʱ<><CAB1><EFBFBD><EFBFBD> + WokerId + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ʱ<><CAB1><EFBFBD><EFBFBD> = <20><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵥λ<EBB5A5><CEBB> - 1582136402000
WorkerId = {<7B><><EFBFBD><EFBFBD>ֵ}
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 5 <20><> 2^SeqBigLength-1 ֮<><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
3.<2E><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD>磺select dbo.Fn_NextSnowId(rand())
*/
CREATE function dbo.Fn_NextSnowId
(
@RandomSeed float -- <20><><EFBFBD><EFBFBD>ID<49>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD> rand() <20><><EFBFBD><EFBFBD>
)
returns bigint
as
begin
declare @CurrentTime bigint
declare @TimeTick bigint
declare @WorkerId int
declare @WorkerIdBigLength int
declare @SeqBigLength int
-- Begin: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʼ<EFBFBD><CABC><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> @WorkerIdBigLength <20><> @SeqBigLength <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ͬ
set @WorkerId = 1 -- <20><><EFBFBD><EFBFBD>ֵ 2^@WorkerIdBigLength-1
set @WorkerIdBigLength = 4 -- @WorkerIdBigLength+@SeqBigLength<74><68><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>22
set @SeqBigLength = 8
-- End
-- <20><>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵥λ<EBB5A5><CEBB>
set @CurrentTime = CONVERT(BIGINT,DATEDIFF(MI,'1970-01-01 00:00:00.000', GETUTCDATE())) * 60000 + DATEPART(S,GETUTCDATE()) * 1000 + DATEPART(MS, GETUTCDATE())
-- <20>õ<EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ó<EFBFBD>ID<49><44>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EEB2BF>
set @TimeTick=@CurrentTime-1582136402000
-- <20><><EFBFBD><EFBFBD>ID
-- ѩ<><D1A9>ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 5<><35>2^SeqBigLength-1֮<31><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (5 + round((POWER(2, @SeqBigLength)-1) * rand(), 0)
return @TimeTick * POWER(2, @WorkerIdBigLength + @SeqBigLength) + @WorkerId * POWER(2, @SeqBigLength) + (5 + round((POWER(2, @SeqBigLength)-1) * @RandomSeed, 0))
end
GO