使用时间戳自动生成不重复主键

3621
0

luojr 初学数据Lv2

发表于2022-4-2 15:46

楼主
本帖最后由 luojr 于 2022-4-2 15:52 编辑

需求场景
    在实际业务场景中,设置回填表格时经常需要新增行时,自动生成一串不重复的字符,把该字段设置为回填表的主键,比如报销单的单号、请假条的单号等一般都需要系统自动生成。我们通常是使用GUID()函数自动生成主键,详细操作可参考https://bbs.esensoft.com/thread-135468-1-1.html ,但是GUID()函数是生成随机不重复字符串。    我们是否可以使用更有意义又不容易重复的字符串来当主键呢?答案是可以的,就是我们今天介绍的获取到插入行时的时间戳来当主键的方法,方法讲解如下:


二 表样设计
步骤1首先需要了解获取到当前时间戳的函数,我们可以使用函数datetostr()将时间转换成时分秒的格式,
当使用today()进行转换时,转换函数需要这样设置datetostr(today(),'yyyy-mm-dd hh:nn:ss')
若使用数据库时间戳字段时,则转换函数需要这样设置datetostr(today(),'yyyy-mm-dd hh:mi:ss')  参考https://bbs.esensoft.com/thread-133395-1-1.html


步骤2:考虑到目前表样里可能已经有一列时间戳字段,那么我们需要增加一列辅助列,
辅助列的表达式设置为      if(len(self.leftcell)>0,self.leftcell.txt,DATETOSTR(today(),"yyyy-mm-dd hh:nn:ss"))  
数据类型选择字符型
表样设计如图:


步骤3将表格启用回填,增加一行字段映射,映射刚增加的辅助列,对应上新的主题表字段,注意:该行需要在主键栏中选中是,设置为主键。当然还要在其他设置中设置插入行,否则无法添加行。
用来存放时间戳的主题表字段的 数据类型也在系统中设置为时间戳。

具体设置截图如下:

       



三 操作演示
根据上述步骤设置好后,我们计算报表,发现如果之前有时间戳数据,则自动引用该数据,如果没有,则获取到当前时间。
添加一行时就可以发现,我们设置的辅助列中自动生成了数据,也就是我们之前在辅助列中使用函数获取到的时间,时间精确到了秒,把该数据对应的字段设置为主键,大概率不会出现主键重复问题。


附上本地表样 仅供参考~   分析表_20220402_154652.zip (3.76 KB, 下载次数: )




最近看过此主题的会员

esen_4Y3L5ADO80

esen_4XW9QT2XNS

doubao

hhdtest

cuihr

zhaojinjin

jiangss

shqx

keer_

咏之

823583266

0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号