制作网站问题和解决方法wordpress模板数据
web/
2025/9/27 15:54:08/
文章来源:
制作网站问题和解决方法,wordpress模板数据,东莞网站托管,网站引流推广怎么做数据库记录修改功能 在上篇文章中我们介绍了如何插入数据库记录#xff0c;本篇文章会沿用上篇文章的测试数据#xff0c;介绍如何使用ADI平台定义一个修改目标数据库记录的接口#xff0c;包括 单主键单表修改、复合主键单表修改、多表修改#xff08;整合前两者#xff…数据库记录修改功能 在上篇文章中我们介绍了如何插入数据库记录本篇文章会沿用上篇文章的测试数据介绍如何使用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平台修改数据库表的数据那么json报文的根节点必须有一个和表名相同的节点名称即dsj_zhuangs大小写不敏感且节点下必须包含主键字段名和字段值主键字段值是不会被修改的报文结构如下
{dsj_zhuangs: [{zhdjdydm: 幢登记单元代码/不动产单元号,zl: 幢坐落}]
}dsj_zhuangs节点可以是一个json对象意味着只能修改单个幢的记录或者是一个json数组意味着可以修改多个幢的记录每个json对象的属性值必须和数据库表的字段名相同大小写不敏感要修改哪些字段我们就在节点中放哪些字段没有在节点中传递的字段是不会被修改的。
2.1.1 在API平台定义一个PUT路由
路由编码可定义为updateZhuang2dsj意思是修改大数据平台的幢数据。如图
注意调用方式选择put。
2.1.2 在路由下定义一个分享设置
在分享设置中填写大数据平台的数据库即目标库连接方式。如图
2.1.3 在分享设置中定义目标库的数据库表
点击分享设置后面的[表定义]。如图
在表定义界面点击[新增]填写以下字段如图 注意这里的主键字段要填写zhdjdydm因为我们要根据已知的zhdjdydm来修改表记录这里填写的主键字段是不会被接口修改的。
填写完成后点击保存即可。如图 点击[字段信息]如图 这里的字段信息默认是该表的所有字段同时意味着接口调用者可以发送这些字段如果我们不想由接口调用者传入自增主键的值那么应该在这里把xh字段删除。
2.1.4 调用接口完成幢表数据修改
打开在线接口文档如图所示 我们填写以下json数据
{dsj_zhuangs: [{zhdjdydm: 110108001001GB00001F0001,zl: 北京市海淀区曙光中路曙光花园智业园1幢(修改)},{zhdjdydm: 110108001001GB00001F0002,zl: 北京市海淀区曙光中路曙光花园智业园2幢(修改)}]
}我们在坐落后加上(修改)来演示修改效果实际业务中大家根据实际情况传值即可。 点击[试一下]如图所示
可以看到接口调用成功了再看看dsj库里数据是否被修改了
幢数据被成功修改。
3.复合主键单表修改户数据
所谓复合主键是指我们要根据这个表的某几个字段作为where条件来更新对应记录的其它字段我们这里以户表的zhdjdydm(幢登记单元代码)和hdjdydm(户登记单元代码)字段作为更新条件。
3.1 实现对dsj_hus表的修改
要通过API平台修改数据库表的数据那么json报文的根节点必须有一个和表名相同的节点名称即dsj_hus大小写不敏感且节点下必须包含主键字段名和字段值报文结构如下
{dsj_hus: [{zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010003,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-103,jzjg: 钢结构}, {zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010004,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-104,jzjg: 钢结构}]
}dsj_hus节点可以是一个json对象意味着只能修改单个户的记录或者是一个json数组意味着可以修改多个户的记录每个json对象的属性值必须和数据库表的字段名相同大小写不敏感要修改哪些字段我们就在节点中放哪些字段没有在节点中传递的字段是不会被修改的。
3.1.1 在API平台定义一个PUT路由
路由编码可定义为updateHu2dsj意思是修改大数据平台的户数据。如图
注意调用方式选择put。
3.1.2 在路由下定义一个分享设置
在分享设置中填写大数据平台的数据库即目标库连接方式。如图
3.1.3 在分享设置中定义目标库的数据库表
在表定义界面点击[新增]填写以下字段如图
注意这里的主键字段要填写zhdjdydm,hdjdydm 因为我们要根据已知的zhdjdydm和hdjdydm来修改表记录多个字段使用逗号隔开。
填写完成后点击保存即可。如图 点击[字段信息]如图
这里的字段信息默认是该表的所有字段同时意味着接口调用者可以发送这些字段如果我们不想由接口调用者传入自增主键的值那么应该在这里把xh字段删除截图中我已经删除了。
3.1.4 调用接口完成户表数据修改
打开在线接口文档如图所示 我们填写以下json数据
{dsj_hus: [{zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010003,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-103(修改),jzjg: 钢结构(修改)}, {zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010004,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-104(修改),jzjg: 钢结构(修改)}]
}我们在相关字段值后加上(修改)来演示修改效果实际业务中大家根据实际情况传值即可。 点击[试一下]如图所示
可以看到接口调用成功了再看看dsj库里数据是否被修改了
户数据被成功修改。
3.1.5 如果接口报错是怎样的
我们在请求报文中填写以下json数据
{dsj_hus: [{zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010003,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-103(修改2),jzjg: 钢结构(修改2)}, {zhdjdydm: 110108001001GB00001F0001-1,hdjdydm: 110108001001GB00001F00010004,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-104(修改2),jzjg: 钢结构(修改2)}]
}首先我们故意把第2个户的zhdjdydm字段值改为110108001001GB00001F0001-1这是一个目标数据库中不存在的字段值然后我们把其它字段值后面加上修改2,来演示修改效果。 主要是观察接口是否会报错如果报错报错信息是什么样的如果报错事务会自动回滚吗 点击[试一下]如图所示 可以看到接口报错了并且错误信息如下
{type: fail,data: 数据更新失败validateParams4Mod校验失败根据数据库表[dsj_hus]的主键[zhdjdydm,hdjdydm]值[{zhdjdydm110108001001GB00001F0001-1, hdjdydm110108001001GB00001F00010004}]未查询到待更新的记录-uuid[aebf9f],uuid: aebf9fe9aa164289b726881244621879
}错误提示信息非常明显的告诉我们是哪一条数据出现了问题方便您进行问题排查。 我们再看看数据库的情况 可以看到没有任何记录被修改了说明我们的事务自动回滚了。
4.多表修改整合前两者
所谓多表修改是指我们通过一个接口实现对多张表的修改操作。我们上一篇文章已经知道如何实现多表插入其实多表修改、多表删除都是相同的道理我们只需要在一个分享设置下进行表定义的时候把这些表都定义进去即可。
4.1 在API平台复制一个PUT路由
我们可以通过复制前面已经定义好的updateZhuang2dsj或updateHu2dsj路由来得到一个新路由。我们这里选择对updateHu2dsj进行复制如图 得到新路由
4.2 在分享设置中定义目标库的数据库表dsj_zhuangs
复制之后已经有dsj_hus的表定义了我们追加dsj_zhuangs的表定义即可。如图 由于这里不需要强制的先后更新顺序因此两个表的写入顺序可以相同也可以不同。
4.3 调用接口完成幢表和户表数据修改
打开在线接口文档如图所示 由于要同时修改两张表的数据因此填写的json报文结构如下
{dsj_zhuangs: [{zhdjdydm: 110108001001GB00001F0001,zl: 北京市海淀区曙光中路曙光花园智业园1幢},{zhdjdydm: 110108001001GB00001F0002,zl: 北京市海淀区曙光中路曙光花园智业园2幢}],dsj_hus: [{zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010003,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-103,jzjg: 钢结构}, {zhdjdydm: 110108001001GB00001F0001,hdjdydm: 110108001001GB00001F00010004,zl: 北京市海淀区曙光中路曙光花园智业园1幢B座1-104,jzjg: 钢结构}]
}通过报文可以知道我们这里计划把前面修改过的幢坐落、户坐落、户建筑结构给改回去。 点击[试一下]如图所示 可以看到接口调用成功现在让我们去看看库里的数据 幢表 户表 幢表和户表都更新成功了。
5.总结 到这里对单主键单表、复合主键单表、多表的修改功能介绍就完成了无论是哪一种只要是一个分享设置下的操作都会确保在同一个事务中执行一旦发生异常都会自动回滚。另外我们这里演示的都是手工组装报文进行测试在实际工作中大家可以参考上一篇文章的方式通过API平台自动组装报文并完成数据修改。 后续我将继续介绍ADI平台其它的重要功能谢谢大家的阅读
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82850.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!