同步增删改存储过程

当表B更新或者新增时调用该存储过程,同步至表A

create or replace procedure sync(p_ID in NUMBER) is

begin
  MERGE INTO A t1
USING (select ID,NAME from B WHERE ID=p_ID) t2
ON (t1.ID=t2.ID)
WHEN MATCHED THEN
    UPDATE
    SET t1.NAME = t2.NAME
   
WHEN NOT MATCHED THEN
    INSERT (ID,NAME) VALUES (t2.ID,t2.NAME);
             commit;

end sync;


当表B删除记录时,先记录下ID,并同步删除A里的记录

create or replace procedure deleted(p_ID in NUMBER) is
begin
  MERGE INTO ZJ_JC_FXGLML t1
USING (select id from ZJ_JC_FXGLML WHERE ID=p_ID) t2
ON (t1.id=t2.id)
WHEN MATCHED THEN
    UPDATE
    SET t1.name = ''//delete只能在update之后调用,且删除范围在update的数据之内
    delete where name is null;
             commit;
end deleted;


mybatis执行存储过程

<!-- 调用存储过程同步 -->
    <update id="sync" statementType="CALLABLE">
    <![CDATA[
    {call sync(#{id,mode=IN})}
]]>
    </update>
    
    <!-- 调用存储过程删除同步 -->
    <delete id="deleted" statementType="CALLABLE">
    <![CDATA[
    {call deleted(#{id,mode=IN})}
]]>
    </delete>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值