有张表A  里面有字段AAC001(个人编码)  YAE099(流水号) YAC097(协议编号) YAC107(协议状态) AAE140(险种类型)等字段,
当我通过程序插入数据的时候,发现签订了两份有效的协议(根据YAC107来判断),不过产生的YAE099(流水号) YAC097(协议编号)是不一致的
就说想写个触发器来实现这样的功能,当插入有一份有效协议的记录时,不允许再插入一条有效状态的协议(如果有就把它删除),如何实现呢,大侠们,谢谢

解决方案 »

  1.   

    --在表A上增加主键:alter table tableA add constrains primary(YAC097,YAC107);--如有重复记录,可以把tableA拷入tableB:insert into tableB
      select AAC001,YAE099,YAC097,YAC107,AAE140
        from (
                  select AAC001,YAE099,YAC097,YAC107,AAE140,row_number() over (partition by YAC097,YAC107 order by YAC097,YAC107) rn
                  from tableA
             )
       where rn = 1