Sql 我可以在DB2中用一个查询更新2个文件吗

Sql 我可以在DB2中用一个查询更新2个文件吗,sql,ibm-midrange,db2-400,Sql,Ibm Midrange,Db2 400,我有两个文件,文件A和文件B(具有相同的密钥)。 我需要用文件B中的一些对应字段更新文件A中的一些字段。此外,如果我能够更新文件A中的行,那么我需要将文件B中的字段“ERrorflag”更新为“N” 我的问题是,有没有一种方法可以在没有光标的情况下一次性实现这一点?我知道“更新”只能更新一个文件,但是否还有其他选项,如“合并”?因此,您可以通过存储过程调用(但存储过程必须执行两次更新,每个文件一次更新)或触发器(文件a上的更新将触发文件B上的更新)来完成此操作(仍然有两条update语句,但第二

我有两个文件,文件A和文件B(具有相同的密钥)。 我需要用文件B中的一些对应字段更新文件A中的一些字段。此外,如果我能够更新文件A中的行,那么我需要将文件B中的字段“ERrorflag”更新为“N”


我的问题是,有没有一种方法可以在没有光标的情况下一次性实现这一点?我知道“更新”只能更新一个文件,但是否还有其他选项,如“合并”?

因此,您可以通过存储过程调用(但存储过程必须执行两次更新,每个文件一次更新)或触发器(文件a上的更新将触发文件B上的更新)来完成此操作(仍然有两条update语句,但第二条语句发生在后台)。不幸的是,使用触发器选项时,对文件A的任何更新都会触发触发器。因此,如果您只希望在使用文件B中的数据更新文件A时更新文件B中的标志,则必须确定如何防止在发生任何其他更新时更新文件B。使用存储过程进行管理更容易,您还可以将这两个更新包装在一个事务中,以确保两者都发生或两者都不发生。

因此,您可以通过存储过程调用(但存储过程必须执行两个更新,每个文件一个更新)或触发器(文件a上的更新将触发文件B上的更新)来实现这一点(仍然有两条update语句,但第二条语句发生在后台)。不幸的是,使用触发器选项时,对文件A的任何更新都会触发触发器。因此,如果您只希望在使用文件B中的数据更新文件A时更新文件B中的标志,则必须确定如何防止在发生任何其他更新时更新文件B。使用存储过程进行管理更容易您还可以将这两个更新包装在一个事务中,以确保两者都发生或两者都不发生。

考虑触发器是否是一种解决方案。一个表上的Insert/Update/Delete可以触发另一个表上的操作。为什么您认为需要在一个语句中更新两个文件?您试图解决的实际问题是什么?请考虑r如果触发器是解决方案。一个表上的Insert/Update/Delete可以触发另一个表上的操作。为什么您认为需要在一条语句中更新两个文件?您试图解决的实际问题是什么?