我有一张看起来像这样的桌子
PK ITEM_CODE PK VENDOR_CODE PRIMARY_VENDOR
0001 11111 T
0001 999999 T
0002 11111 T
0002 999999 T
0003 11111 T
0004 999999 T
任何将11111设置为供应商代码的项目都需要更新为99999。
问题是,我没有主要供应商的任何项目,所以我不能简单地将11111的所有实例设置为F或删除它们。
我也有重复项,因此我不能将所有111111设置为999999,因为这违反了PK。
如何在没有重复条目的情况下,首先更新所有11111到999999,然后在有99999条目的情况下删除11111。
答案 0 :(得分:0)
如何首先删除有供应商99999的11111的所有值。然后更新值和行。
delete t from replenish_vendor t
where vendor_code = 111111 and
exists (select 1 from replenish_vendor t2 where t2.item_code = t.item_code and t2.vendor_code = 99999);
update replenish_vendor t
set vendor_code = 99999,
primary_vendor = 'F'
where vendor_code = 111111;
您的文字表明您希望在这种情况下将主要供应商设置为F
。第一次删除可能需要考虑primary_vendor
。
如果您有可能在数据库上进行其他数据库操作,则应将它们包装在单个事务中,以便其他事务不会干扰数据。