论坛里哪位高手帮忙写个触发器,需求如下:
有一张企业信息表:tb_ods_qyxx,字段包括   
qybm(企业编码)
qymc(企业名称)
zcdz(注册地址)
jydz(经营地址)
fddbr(法定代表人)
zczb(注册资本)
hy(行业)这张表tb_ods_qyxx每月都要插入新的数据,新的数据中包括新的企业信息和原有企业信息变更的情况,要求插入新数据的时候,将企业各字段都更新为最新的
比如:原表:
qybm qymc            zcdz        jydz       fddbr     zczb      hy
0001 新乐房地产公司  黄河道20号 黄河道 20号  张三      50万元   房地产业新数据:
qybm qymc            zcdz        jydz       fddbr     zczb      hy
0001 新乐房地产公司01  长江道22号 长江道 22号  李四      80万元   建筑业新数据插入的同时,要求根据新数据,更新原有旧数据谢谢大家啦!

解决方案 »

  1.   


    --将每个月的新数据放在一个表里面,使用merge into 语句来更新表:
    --1.先建立一个新数据表:
    create table new_data(
    ......
    )
    --字段与tb_ods_qyxx表相同
    --下面使用merge into语句来更新表tb_ods_qyxx
    merge into tb_ods_qyxx a
    using new_data on b
    (a.qybm=b.qybm)
    when matched then
         update
         set  a.qymc=b.qymc
             ,a.zcdz=b.zcdz
             ,a.jydz=b.jydz
             ,a.fddbr=b.fddbr
             ,a.zczb=b.zczb
             ,a.hy=b.hy
    when not matched then
         insert (
         a.qybm,a.qymc,a.zcdz,a.jydz,a.fddbr,a.zczb,a.hy)
         values (
         b.qybm,b.qymc,b.zcdz,b.jydz,b.fddbr,b.zczb,b.hy)
    ;
    --更新表tb_ods_qyxx成功后,truncate table new_data,用于下一次接收数据