zoukankan      html  css  js  c++  java
  • 行式填报之主键设置

    填报功能是报表工具不可或缺的功能之一,此功能可以让用户在页面中进行数据维护操作。特别是在行式填报中,用户不仅可以修改数据,而且可以插入 / 添加新数据或删除已有数据。这样,在更新行式填报页面中的数据记录时,主键字段就会涉及 insert 和 delete 操作,而对于不同类型的主键我们应该如何进行更新设置?有哪些方面是需要我们注意的呢?下面我们将以雇员信息表的维护为例探讨一下主键设置的相关内容。

    附 Employee 表结构:

    先准备一张行式填报表,制作效果如下图所示:

    (行式填报表快速制作教程参见 数据维护不求人,一招搞定增删改

    来源脚本设置:

    重点来啦 ~~ 去向脚本中不同的主键类型应该如何配置呢?我们来逐个攻破:

    1.单主键

    Employee 表的主键为 empno,那么脚本中的 update 函数配置为:

    A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;empno)

    在英文分号后面配置主键 empno,报表在做更新处理时,会以 empno 为主键对比 employee 和 employee_old 对象的数据,然后将差异数据更新到表 employee 中。

    完整版脚本内容如下图所示:

    2.多主键

           一般情况下,物理表只设置一个主键字段就可以将数据记录区分开来,特殊情况下会设置两个及以上主键字段,例如上述 employee 表我们可以通过 empno 字段来区分数据记录,也可以通过 ename+sex 两个字段来锁定唯一一条符合条件的记录,此时我们的脚本中应该如何设置主键呢?

    很简单,只需要用英文逗号隔开多个主键字段就可以了:

    A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;ename,sex)

    完整版脚本内容如下图所示:

    3.自增主键

    自增主键可以提升查询效率、节省磁盘空间,在填报中也有广泛应用。以 mysql 设置为例:可以通过第三方工具(如 Navicat)或者 sql 语句设置某个主键字段的数据自动增长。

           在数据库端很容易配置主键字段的自动增长,那么在润乾报表中如何实现自动增长字段的数据更新呢?很简单,只需要添加一个 @1 选项就搞定了。

    A1.update@1k(employee:employee_old,employee,empno,ename,salary,sex;empno)

    其中,@1 选项表示第一个字段是自增字段,没有对应更新值表达式

    注意:这里是数字 1 而不是字母 l

    完整版脚本内容如下图所示:

    4.“动态”主键

           “动态”主键我们理解成通常说的 UUID,表示主键的值是一个不重复的随机数,这种方式比自动增长方式更安全、重复率更低。

            我们以 mysql 数据库为例,将随机生成的四位数字作为主键 empno 的数据,并将数据更新入库。在润乾报表中只需要多一步 run 操作给主键字段赋值,剩下的和常规更新配置一样。

           =employee.run(if(empno==null,~.empno=A1.query(“select round(round(rand(),4)*10000) as xuhao”).xuhao))  // 当 employee 对象中的主键 empno 字段为空的时候,我们将随机生成的四位数字赋值给主键字段

    (这里为什么条件是判断为空呢?因为一般自增主键或者 UUID 主键都不允许编辑或者直接设置用户不可见,所以此时新增的记录中主键字段为空。)

    完整版脚本内容如下图所示:

    至此,我们已经将几种常见主键设置方式探讨完毕,现在回过头来看填报数据处理中的主键设置,是不是有种“wow~~amazing~”的感觉?

    如果您在填报学习过程中有任何疑问,欢迎留言,我们一起来盘它!

  • 相关阅读:
    linux下启动和关闭网卡命令及DHCP上网
    python 编码问题
    paddlepaddle
    Convolutional Neural Network Architectures for Matching Natural Language Sentences
    deep learning RNN
    Learning Structured Representation for Text Classification via Reinforcement Learning 学习笔记
    Python IO密集型任务、计算密集型任务,以及多线程、多进程
    EM 算法最好的解释
    tensorflow 调参过程
    tensorflow 学习纪录(持续更新)
  • 原文地址:https://www.cnblogs.com/IBelieve002/p/10456369.html
Copyright © 2011-2022 走看看