公司做网站能抵扣进项税吗,利津网站定制,昆明公司做网站的价格,网站开发大概需要多久数据库记录删除功能 在前续文章中我们介绍了如何插入和修改数据库记录#xff0c;本篇文章会沿用之前的测试数据#xff0c;介绍如何使用ADI平台定义一个删除目标数据库记录的接口#xff0c;包括 单主键单表删除、复合主键单表删除、多表删除#xff08;整合前两者#x…数据库记录删除功能 在前续文章中我们介绍了如何插入和修改数据库记录本篇文章会沿用之前的测试数据介绍如何使用ADI平台定义一个删除目标数据库记录的接口包括 单主键单表删除、复合主键单表删除、多表删除整合前两者三种方式。无论是单表删除还是多表删除一旦发生异常那么默认情况下API平台的整个数据删除事务都将自动回滚。
1.需求说明 根据前续文章的例子我们已经实现把幢数据和户数据插入市大数据局的数据库表中。假设数据局提出了新要求当业务系统的幢和户数据发生删除时要对已归集到数据局的数据做同步删除。首先让我们回顾下dsj数据库中幢和户的表结构。 dsj数据库的幢表名为dsj_zhuangs建表语句如下
create table dsj_zhuangs
(xh bigint(20) not null primary key auto_increment comment 幢序号,zhdjdydm varchar(50) not null comment 幢登记单元代码,zl varchar(100) comment 幢坐落
);
alter table dsj_zhuangs add unique (zhdjdydm);dsj数据库的户表名为dsj_hus建表语句如下
create table dsj_hus
(xh bigint(20) not null primary key auto_increment comment 户序号,hdjdydm varchar(50) not null comment 户登记单元代码,zhdjdydm varchar(50) not null comment 所属幢登记单元代码,fbm varchar(50) comment 房编码,qsc int(4) comment 起始层,zhzhc int(4) comment 终止层,fh varchar(50) comment 室号/部位,zl varchar(100) comment 房屋坐落,jzjg varchar(50) comment 建筑结构,ghyt varchar(50) comment 规划用途,jzmj double(18, 3) comment 建筑面积
);alter table dsj_hus add unique (hdjdydm);-- 设置户表的外键zhdjdydm
alter table dsj_hus add constraint hus_fk_zhdjdydm foreign key (zhdjdydm) references dsj_zhuangs(zhdjdydm);接下来我们再回顾下之前已经写入dsj数据库的数据。 幢表(dsj_zhuangs)数据:
户表(dsj_hus)数据
2.单主键单表删除幢数据
所谓单主键是指我们要根据这个表的某一个字段作为where条件来删除对应的数据库记录这个字段可以不是数据库表真正的主键它可以是一个唯一键甚至连唯一键都可以不是如果不是唯一键或主键就可以批量删除数据大家更新实际的场景做选择即可我们这里以幢表的zhdjdydm(幢登记单元代码)字段作为删除条件。
2.1 实现对dsj_zhuangs表的删除
要通过API平台删除数据库表的数据那么需要定义一个delete请求的路由由于delete请求无法以请求体的方式发送json报文因此只能把入参放到url后面。调用ADI平台实现删除操作的报文结构如下
primarykey{tablename:[{key1:value1,key2:value2},{key1:value11,key2:value2}]}primarykey是固定参数名要么全部小写要么全部大写它的值是一个json对象json对象的格式和咱们之前数据库记录插入或修改类似。 对于我们的幢表请求参数应该如下
primarykey{dsj_zhuangs:[{zhdjdydm:110108001001GB00001F0002}]}json对象的根节点必须有一个和表名相同的节点名称即dsj_zhuangs大小写不敏感且节点下必须包含主键字段名和字段值dsj_zhuangs节点可以是一个json对象意味着只能删除单个幢的记录或者是一个json数组意味着可以删除多个幢的记录。
2.1.1 在API平台定义一个DELETE路由
路由编码可定义为deleteZhuang2dsj意思是删除大数据平台的幢数据。如图
注意调用方式选择delete。
2.1.2 在路由下定义一个分享设置
在分享设置中填写大数据平台的数据库即目标库连接方式。如图
2.1.3 在分享设置中定义目标库的数据库表
点击分享设置后面的[表定义]在表定义界面点击[新增]填写以下字段如图
注意这里的主键字段要填写zhdjdydm因为我们要根据已知的zhdjdydm来删除表记录。
2.1.4 调用接口完成幢表数据删除
打开在线接口文档如图所示 我们填写以下json数据
{dsj_zhuangs:[{zhdjdydm:110108001001GB00001F0002}]}为了演示我们选择了一个下面没有户信息的幢确保可以删除成功如果幢下面有户信息那么我们应该先删除户信息再删除幢信息否则会因为外键而报错。 点击[试一下]如图所示
可以看到接口调用成功了再看看dsj库里数据是否被删除了 幢数据被成功删除。 值得一提的是删除操作不会去校验我们传入的主键值在数据库表中是否存在即使不存在也不会报错。
3.复合主键单表删除户数据
所谓复合主键是指我们要根据这个表的某几个字段作为where条件来删除对应的数据库记录我们这里以户表的zhdjdydm(幢登记单元代码)和hdjdydm(户登记单元代码)字段作为删除条件。
3.1 实现对dsj_hus表的修改
这里我们演示删除幢登记单元代码为110108001001GB00001F0001、户登记单元代码为110108001001GB00001F00010004的户信息报文结构如下
{dsj_hus:[{zhdjdydm:110108001001GB00001F0001,hdjdydm:110108001001GB00001F00010004}]}3.1.1 在API平台定义一个DELETE路由
路由编码可定义为deleteHu2dsj意思是删除大数据平台的户数据。如图
注意调用方式选择delete。
3.1.2 在路由下定义一个分享设置
这里顺便给大家介绍一下分享设置的导入导出功能通过分享设置的导入导出功能可以把A环境比如测试环境的分享设置导入到B环境比如生产环境也可以把A路由的分享设置导入到B路由极大的减少您配置的工作量。 我们上篇文章定义的修改户信息的分享设置和这里要定义的删除户信息的分享设置基本一致因此我们先导出那个分享设置如图 得到导出的json配置信息如图 然后打开路由deleteHu2dsj的分享设置列表点击[导入]如图 把刚才导出的json配置信息复制粘贴到这里点击[导入分享设置]如图 导入成功 注意红框中的内容需要您自行修改为与当前分享设置对应功能匹配的描述。例如我把分享编码由updateHu2dsj改为deleteHu2dsj把分享名称由修改大数据平台的户数据改为删除大数据平台的户数据。
3.1.3 调用接口完成户表数据删除
打开在线接口文档如图所示 我们填写以下json数据
{dsj_hus:[{zhdjdydm:110108001001GB00001F0001,hdjdydm:110108001001GB00001F00010004}]}点击[试一下]如图所示
可以看到接口调用成功了再看看dsj库里数据是否被删除了 户数据被成功删除。
4.多表删除整合前两者 所谓多表删除是指我们通过一个接口实现对多张表的删除操作。我们前续文章已经知道如何实现多表插入、多表修改、多表删除也是相同的道理我们只需要在一个分享设置下进行表定义的时候把这些表都定义进去即可。 唯一需要您知道的是当多表删除时我们的报文应该是这样的:
{dsj_zhuangs:[{zhdjdydm:110108001001GB00001F0001}],dsj_hus:[{zhdjdydm:110108001001GB00001F0001,hdjdydm:110108001001GB00001F00010004}]}在定义表的时候户表的操作顺序应该小于幢表也就是说要先删户表的记录再删幢表的记录避免外键关联导致的报错。
5.总结 到这里对单主键单表、复合主键单表、多表的删除功能介绍就完成了无论是哪一种只要是一个分享设置下的操作都会确保在同一个事务中执行一旦发生异常都会自动回滚。另外我们这里演示的都是手工组装报文进行测试在实际工作中大家可以参考上一篇文章的方式通过API平台自动组装报文并完成数据修改。 后续我将继续介绍ADI平台其它的重要功能谢谢大家的阅读