MySql是如何多表循环遍历更新

MySql是如何多表循环遍历更新,第1张

MySql数据库中存在大量的表结构,而且这些表都存在一个共同点,就是表中都有相同字段,比如id,name,city,adress,lat,lng。表中字段id,name,city,adress不允许为空,所以表中这几个字段的数据都是已经赋给实值的,而lat与lng(经纬度)是为空的。

现在要写一个程序,根据city,adress请求获取数据,把循环每一表中根据city,adress请求获取的数据更新到相应表,相应表中对应的那一行数据。这句话,可能你有点晕,说白了就是,先循环查询遍历表中city与adress的值,根据city,adress的值请求获取数据,更新到相应行中,这个表循环更新完了就跳到下个表中再循环更新,以此类推,直到全部更新。

方法、过程如下:

在每个数据库的table1\table2都建立插入、删除、修改触发器

如在A1上

ceate trigger dbo.table1_u on A1.dbo.table1 for insert,update,delete as

IF @@rowcount = 0 RETURN

declare @no_i int -- 假设no为关键字

--declare 其他字段

declare @no_d int -- 假设no为关键字

--declare 其他字段

--赋值

select @no_i =no ,--其他值

from inserted

select @no_d =no ,--其他值

from deleted

--判断@no_d,@no_i 是否在A2,A3,A4,A5的表中存在

--1、如果@no_d,@no_i 都存在,则用新值更新A2,A3,A4,A5的talbe1

--2、如果@no_d不存在@no_i存在,则将新值插入A2,A3,A4,A5的talbe1

--3、如果@no_d存在@no_i不存在,则删除A2,A3,A4,A5的talbe1对应的值

if exists(select 1 from A2.dbo.talbe1 where no = @no_d) and

exists(select 1 from A2.dbo.talbe1 where no = @no_i)

begin

--修改A2数据库的表

end

1、一句SQL是无法对多表进行更新的,只能一句SQL只更新一张表的数据

2、可以使用多个SQL语句对多个表进行数据更新

3、建议在更新前使用事务,更新后,提交事务。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6772166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存