首页 > 其他分享 >ACCESS 模拟雪花ID

ACCESS 模拟雪花ID

时间:2024-05-31 22:44:22浏览次数:22  
标签:Dim sequence timestamp 雪花 ACCESS 数据表 GenerateSnowflakeID ID

说明:

以自动编号类型为主键的数据表,在有些场景使用起来会比较麻烦,比如,我们在使用 INSERT INTO 往数据表里面插入数据时,不能精准得获取刚刚插入的记录的ID值,也就无法对这条记录进行更多的操作,比如把这个ID值外链给其他数据表等.

也有人会说用MAX不就可以取到这个ID值了吗?嗯 ,一个人用的话,这个方法确实没毛病,但是在多人使用的情况下,就没办法精准找到自己刚刚生成的记录的ID了.

Function GenerateSnowflakeID() As String    '生成一个雪花ID
    Dim epoch As Date
    epoch = DateSerial(2020, 1, 1) ' 设定起始时间为2020年1月1日
    
    Dim timestamp As Double
    timestamp = (Now - epoch) * 86400000 ' 计算当前时间与起始时间的毫秒数
    
    Dim UserID As Long
    UserID = M1.GetCurrentUser(True) ' 用户ID
    
    Dim sequence As Integer
    sequence = Rnd * 4096 ' 随机生成一个12位的序列号
    
    ' 将时间戳、机器ID和序列号拼接成雪花ID.取固定长度为20位,这个可以自定义
    GenerateSnowflakeID = Left(CStr(timestamp) & CStr(UserID) & CStr(sequence) & "000000", 20)
End Function

返回值演示:

?GenerateSnowflakeID
13935819500013801000
13935819400013092000
13935819400012411000
13935819300013541000
13935819300018440000
13935819200011976000
13935819200011840000
13935819100011395000
13935819100011043000
13935819000011968000
13935818900019640000
13935818800011218000
13935818600013236000

 

标签:Dim,sequence,timestamp,雪花,ACCESS,数据表,GenerateSnowflakeID,ID
From: https://www.cnblogs.com/yoooos/p/18225376

相关文章

  • Angular 18+ 高级教程 – Coding Style Guide 编码风格
    前言Angular从v14开始大改特改,改最多的就是编码风格。以前偏向classfirst,@Decoratorfirst,mutablefirst。现在偏向functionfirst,immutablefirst。本篇主要是探讨v14后,尤其是Signal后的Angular编码风格,看看怎么写会比较合理舒服......
  • Another Filling the Grid
    AnotherFillingtheGrid题目信息题目描述Youhave$n\timesn$squaregridandaninteger$k$.Putanintegerineachcellwhilesatisfyingtheconditionsbelow.Allnumbersinthegridshouldbebetween$1$and$k$inclusive.Minimumnumberofth......
  • Ubuntu server 24 (Linux) Snort3 3.2.1.0 Guardian IPtables 联动实战 主动防御系统(
    一  Snort3安装配置,参考:Ubuntuserver24安装配置snort33.2.1.0网络入侵检测防御系统配置注册规则集-CSDN博客二  安装主动防御程序Guardian1下载,解压tarzxvfguardian-1.7.tar.gzcdguardian-1.7/2 配置#拷贝文件sudocpguardian.pl/usr/local/bin/......
  • Android Studio 已经安装 NDK ,但是软件提示找不到。
    AndroidStudio已经安装NDK,但是软件提示找不到。推荐安装win11android-studio-ide-192.6392135-win64jdk-8u381-windows-x64.exeNDKversionis20.0.5594570提示找不到ndk解决办法:在GradleScripts下面的local.properties文件中,手动添加ndk路径:ndk.dir=C:\User......
  • oidc-client.js踩坑吐槽贴
    前言前面选用了IdentityServer4做为认证授权的基础框架,感兴趣的可以看上篇<微服务下认证授权框架的探讨>,已经初步完成了authorization-code与implicit的简易demo(html+js在IIS部署的站点),并实现了SSO,本想着将Demo迁移到vue工程是轻而易举,毕竟也没啥东西,最终拿到access_tok......
  • Android Studio ERROR: Installed Build Tools revision 34.0.0 is corrupted. Remove
    AndroidStudio错误提示:ERROR:InstalledBuildToolsrevision34.0.0iscorrupted.RemoveandinstallagainusingtheSDKManager.解决办法:在C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\34.0.0目录中找到d8.bat,将文件名修改为dx.bat在C:\Us......
  • Android高通 12/13 录屏流程代码位置
     需求如下图实现系统录屏功能 frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord涉及代码ScreenRecordDialog#startBtnRecordingService#start#end ScreenMediaRecorder.java1、点击开始录屏frameworks/base/packages/SystemUI/src/......
  • visual studio IDE 17.10版本 折叠区域高亮问题
    最近vs更新到了17.10版本发现折叠的区域会高亮效果如下 可以看到折叠的区域会呈现一种高亮显示我个人是觉得会分散我注意力下面是关掉的操作 把红框改成自动(ps:可以打中文"可"快速定位到"可折叠区域")这样改完后效果如下 ......
  • Android桌面Launcher源码浅析
    在Android启动过程-万字长文(Android14)中介绍了Android系统的启动过程,本篇文章将继续介绍桌面应用Launcher。一、Launcher介绍在Android启动过程-万字长文(Android14)中提到Launcher是Android系统启动后,由SystemServerActivityManagerService(AMS)加载的第一个应用程序L......
  • Teamcenter 《BMIDE复合属性应用》
    需求ItemRevision的命名需要把版本主属性表单or其他表单中的属性显示在DisplayName中打开BMIDE找到对应的ItemRevision增加复合属性(ItemRevison)增加其他关系的复合属性增加其他表单增加的表单中的复合属性看ItemRevision中最后的属性其他复合属性a2_user......