.

数据库系列教程—数据库操作触发器详解

老赵发表于:2021年07月29日 10:57:02更新于:2021年12月17日 14:45:39

数据库数据收集提示:

体验版数据库的数据收集最多可免费100条,不可下载(如何获取收集更多的数据权限?



一、使用权限

数据库正式功能需专业版及以上用户


二、场景应用

在注册登录、答题排名、抽奖核销助力等场景中,经常需要用到【数据库操作】触发器。本教程将为您讲解,如何在编辑器中使用【数据库操作】触发器。

三、教程准备

如果对数据表的系列教程还不熟悉,可以点此查看数据表视频教程

也可以点此查看我们官网support中的文字系列教程。

四、数据库操作用法

本教程所讲到的所有数据库的交互,都基于触发行为【数据库操作】,我们可以在点击触发器后找到该行为。

image.png

在进行数据库操作触发前,我们需要在工作台新建数据表,并将数据表添加到编辑器中。

(如果对在工作台新建数据表的知识不了解,请戳此翻阅教程。)

在高级组件中找到数据应用-数据表,点击。

image.png

在弹窗中找到自己想要的数据表,并进行导入,如果没有找到自己刚刚添加的数据表,请点击刷新按钮进行刷新。

image.png

导入的数据表可以在逻辑小面板上看到,并可以点击右侧属性面板进行重命名。

image.png


数据库操作之新建数据

新建数据是我们在h5数据库操作中最常用的触发之一,应用在很多需要提交数据的场合。

如下图,我们需要让用户输入自己的【姓名】【手机号】【中奖地址】信息,之后点击提交按钮进行个人信息的提交,当信息提交成功后会显示文本【提交成功!】

image.png

①点击【提交信息】按钮,找到触发器-点击时,添加【数据库操作】触发器。选择操作【新建数据】,如果我们在H5中添加了很多个数据表,我们需要在这里选择要新建数据到哪一个具体的表中。

image.png

注:此处上图中的【返回数据】没有勾选,是因为暂时用不到,【返回数据】的主要用法可以看下文【修改数据】的教程。

②之后弹窗中会显示该数据表中的全部可进行【新建数据】操作的字段,我们点击输入框右侧的加号,在表达式弹窗中找到可赋值元素-姓名输入框,点击确定按钮进行绑定。

image.png

注:实际应用场合中,不仅【输入框】组件可以新建数据到数据库中,其他可以新建数据的组件包括【段落组件】、【参数变量】、【全局变量】、【下拉框】、【文本框】、【图片】【音频】等众多组件,大家可以尝试一下。

③绑定好所有的字段后,我们添加数据库操作成功后的触发行为,点击确认。这样新建数据的操作就完成了,我们可以扫码预览自己的作品体验一下,并查看后台数据表,是否有信息提交成功了。

image.png

注:新建数据时,可以不将所有的字段都与页面中的元素进行绑定,如上方页面中我们可以只显示姓名和手机号输入框,点击提交信息按钮时只绑定【姓名】和【手机号】字段,【中奖地址】输入框为空不绑定,等用户真的中奖后再用【修改数据】的方式来让用户输入自己的中奖地址。

Q: 为什么我点击提交信息时,数据库后台并没有看到我的信息?

A: ①检查自己是否设置了用户提交次数限制,如果超过提交次数限制后就不能再提交数据了;

    ②检查新建数据的字段类型是否和后台数据表的字段类型一致,如文本段落的数据不能提交给后台的整数型字段。

数据库操作之修改数据

 修改数据用于用户新建数据之后,只有当用户新建了数据后,才可以进行数据的修改。

在进行数据的修改之前,我们需要先了解一个概念:数据id。关于数据id的详细教程请戳此处。

只有我们拿到了想要修改的那一条数据的数据id,我们才可以在数据表中定位到这一条数据去修改数据。

image.png

比如上文中,我们在输入了姓名和手机号后,发现自己输入的信息有误,此时我们需要修改自己的信息,便用到了【修改数据】操作。在这个场景中,又分为两种情况:

1. 一种是当用户第一次进入H5中,在新建数据后,立刻发现了自己输入的信息有误,需要修改数据;

2. 另一种是用户第一次新建数据后,退出H5,第二次进入H5中后,想要修改数据。

两种不同的情况想要修改数据的步骤和操作不同,我们分别来讲下。

在第一种情况下,我们需要在【新建数据】的时候勾选【返回数据】,将新建的这一条数据的数据id返回给H5中的一个【全局变量】(文本类型),之后在【修改数据】的设置中,根据全局变量中的数据id来定位这一行数据。详细设置方法如下:

①在编辑器中添加一个全局变量,设置为文本类型。之后我们会将新建数据时返回的数据id存储到全局变量中。关于全局变量的教程可以戳此处。

image.png

②在【新建数据】的设置中,勾选【返回数据】,将数据id返回给页面中的【全局变量】。

image.png

③在【修改数据】的设置中,勾选【返回数据】,将数据id返回给页面中的【全局变量】。

image.png

image.png

在第二种情况下,我们要在再次进入H5的时候拿到用户这一行的数据id,存储给全局变量。这时我们就不会用到【返回数据】了,而是用到触发行为【设置参数值】,将数据表中用户自己的那一行数据的id赋值给页面中的全局变量,之后再在【修改数据】的时候定位修改。

①为了让我们可以从数据库中数不清的数据中准确的筛选出属于我们自己的数据,这时就需要用到【过滤表】。根据过滤表的不同筛选条件,可以筛选出数据表中的不同的数据。

【过滤表】是【数据表】组件下的一个分支,我们可以在逻辑小面板上点击某个【数据表】,在右侧属性面板中找到过滤表。并进行设置。

image.png

我们在过滤表中筛选当前用户当天新提交的所有数据,我们可以在后台工作台中设置每人每天只能提交一次数据,这样就会保证我们的过滤表中只会有一条当前用户的数据了。

注:我们在工作台中可以设置用户提交数据的次数,如每天一次,该次数指的是用户新建数据的次数,和修改数据的次数无关。

②在进入H5的页面当前页上,设置参数值【全局变量】,点击右侧的@进行设置。

image.png

image.png

image.png

此时表达式窗口中应该会出现这样一串表达式:$教程练习数据表.当前用户表.ID.值[行=1]$

其含义为:名叫【教程练习数据表】中的过滤表【当前用户表】中,第一行数据的数据ID的值。

③此时便完成了设置,这样在再次进入h5中,就会获取到今天当前用户的数据id,之后的步骤和第一种情况一样。

image.png

数据库操作之删除数据

在邀请函等场景中,用户可能不想去参与活动了,他们希望可以从数据表中删除自己的用户信息,这时便需要用到【删除数据】操作,该操作同样需要用到数据id。

注:出于安全性考虑,用户只有权限删除自己的数据,如果设置成了通过别人的id去删除别人的数据,H5会报错。

image.png

数据库操作之请求数据

【请求数据】是一种方法,它可以将在数据表中的某些数据请求回H5中显示,能做到这一点的不仅有【请求数据】这一种方法,我们还可以通过【设置参数值】触发行为、【网格列表组件】、【表格输出组件】等种种方式来达成这一目的。

【请求数据】同样需要用到数据id,通过数据id来定位要请求的数据是哪一行数据。

比如我们希望可以在第一次填写完信息退出H5后,再次进入H5可以直接看到我们上一次输入的信息,这时我们便可以用到【请求数据】,通过获取到之前的数据的数据id,然后定位请求该条数据,并将数据信息赋值给页面中的可赋值元素。

①切换到当前页时,执行逻辑判断,判断数据库中是否有本人今天的数据,只有有数据,我们才可以拿到数据id并请求数据进行赋值。

image.png

②我们往往会通过判断【当前用户过滤表】中的数据的行数来判断数据表中是否有当前用户的数据。

由于我们在工作台中设置了每人每天只能提交一次数据,所以如果过滤表中的行数=1,即说明之前提交过数据,我们现在可以请求数据,如果过滤表中行数!=1(不等于1)/行数=0,就说明之前没有提交过数据,便无需有任何操作。

image.png

如何设置行数表达式:在判断条件中选择数据表,找到过滤表【当前用户表】,在右侧的三角符号上选择行数并点击。在下方的判断条件中设置其>=1(由于限制了每人只能提交一次,所以设置行数=1也可以)

image.png

③设置判断条件,当行数=1(或图中的>=1)时,设置参数值【全局变量】=过滤表中当前用户的数据id,并设置【数据库操作】-【请求数据】。

image.png

这样便设置完成了。

数据库操作之搜索/过滤数据

需要配合功能【过滤表】与【表格输出组件】使用。

数据库操作之加载/刷新数据缓存表

需要配合功能【缓存表】使用。

数据库操作之获取数据排名

同样需要使用数据id,往往应用于排行榜类型的H5中,用来获取当前用户的排名。

注:很多用户以为,如果我需要获取当前用户的排名,只需要添加一个以【总分】字段排序的过滤表,之后通过【设置参数值】的方式将【行号】赋值给当前页面的可赋值元素即可。但这样的设置方式是错误的,数据表中的【行号】是一个动态变化的值,无法进行赋值。

如果想获取当前用户的排名,则需要用到触发行为【数据库操作】-【获取排行数据】。步骤如下:

①在工作台的数据表设置中,找到我们希望用来排序的字段,设置用该字段进行排序。

升序:由低到高

降序:由高到低

image.png

②点击保存,回到编辑器页面,在过滤表中,找到自己想要进行排序的某个表,进行相同的设置。

正序:由低到高

反序:由高到低

image.png

③找到自己所设置的排行榜的那一页。

获取某个用户的排名序号数字的思路是,先想办法获取到用户这一行数据的数据id,并存储到全局变量中。之后通过【数据库操作】—【获取排行数据】的方式,将这一行数据的序号赋值给当前页面的某个可赋值元素。

image.png

④设置完成。


补充:数据库操作支持失败时触发器

除了数据库的系列操作执行成功时可添加触发行为,还支持失败时的触发行为。只要数据库操作没有成功,就会执行失败时触发器中的触发行为。

image.png

--------- 不了解设计的程序员不是好客服 ---------------