sql通过一张表修改另一张表的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql通过一张表修改另一张表的数据相关的知识,希望对你有一定的参考价值。

如图,我想根据出库表(左)画了红点的字段,修改物料表(右)的数据。
至于仓库名是根据sent_type来选择对应的仓库的
同时如果执行出错,就是出现负库存时进行rollback,同时能返回一个值提醒下用户。听说是用游标能做,但是不知道咋做的,所以厚脸皮问下哪位大哥或mm能帮忙写下具体的东西。
sent表中可能会出现以下情况:
1.对某条的删除,就是对应的物料表中要进行归0操作。
2.插入一条,又有几种情况(1.物料表中有对应的了,就只有update下。2.物料表中没有,要insert的,这个很是我郁闷的地方。)

sent表里写触发器
1.删除时,去storing里归0(找不到时要怎么处理,想想)
2.插入时,有对应的,UPDATE
无对应的,INSERT

触发器为在你insert、update、deleteing时自动执行

如果不要自动执行就写程序,过程如上,一次过程的前后加事务,成功了提交,不成功rollback
参考技术A 这儿你走错了~~百度下SQL论坛~~那儿全是SQL高手~~各种数据可都有的!你才100分~~前段时间我280分啥都没有~~气得我差点晕过去~~~分那样就被百度收了! 参考技术B 在Storing_Table表里写触发器 参考技术C 贴图显示的字段有限。你把两个表的主要字段,都列出来。然后说清楚,要修改哪个表的哪个字段。两张表根据哪个字段关联。追问

更新了

追答

问题:
1.左边的表(send_body)和右边的表(storing)是一对多关系?如果是,根据哪个字段关联?
2.你是希望在左表(send_body)发生删除时,右边的表(storing)关联的记录归0
你问题补充的2,只针对右表(stoing)和左表(send_body)没有关系吧。

问答问题,要看有没有时间,而不在乎分数。

追问

左边的是出库的详细数据表,右边的是仓存表。应该是左表和右边的是多对一。关联的是批次号(batch_num),物料id,仓库(store_name),单位(unit)。就是左边那几个打红色的。

如果没时间说具体的,能说下怎么伪码不:
SENT_table做更新时发生插入一条,又有几种情况(1.物料表中有对应的了,就只有update下。2.物料表中没有,要insert的)

追答

你是决定用程序操作?还是直接在SQL里面操作?
1.如果用程序操作,写一个存储过程。
2.如果不用程序操作,完全用SQL操作,那么就要为左边建立一个触发器,INSERT 的时候触发。
都不是很复杂,只是第二种写法,消耗一些性能。

追问

我用了存储过程的,但是发现个问题就是在2.物料表中没有,要insert的时候,如果出现意外的事件,比如我限定物料不能存在负库存的。这样子的话,我是先保存了出库表,再在程序中循环逐句修改库存的。这时有个问题就是,表也改了,库存也改了前几条信息了,但后面的都没改。这样就出大问题了。
所以我想问问用数据库搞会不会好点,把出库表的修改信息暂时录到一个临时表中,然后搞个事件,尝试着修改仓库表,如果出错rollback

追答

你在你的存储过程里面用事务,把所有语句都包起来。如果所有语句更新正确就提交,不正确就都不提交。就OK了。

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

新手求指导! 用游标查出sal数据再根据job数据内容对应更换或赋值另一张sal表数据。

参考技术A UPDATE 表1
SET sal=表2.sal
FROM 表2
WHERE 表1.job=表2.job追问

mysql 怎么写

本回答被提问者和网友采纳

以上是关于sql通过一张表修改另一张表的数据的主要内容,如果未能解决你的问题,请参考以下文章

帆软报表条件查询一张表查询二月份的数据,另一张表根据第一张表的查询条件,查新下个月的数据

用oracle存储过程将一张表的数据查出插入另一张表

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

SQL语句循环一张表的一个字段ID,根据这个字段的内容去修改另一张表,

用oracle存储过程将一张表的数据查出插入另一张表

如何将数据库中一张表的全部内容复制到数据库中另一张表中