Oracle外键delete
asset_position表
asset_position_oid account_no facility_pool_oid client_group_oid
1001 A1 2001 3001
1002 A2 2002 3002
asset_position_ts表
asset_position_ts_oid asset_position_oid account_no facility_pool_oid client_group_oid
4001 1001 A4 2002 3002
4002 1003 A3 2002 3002
若asset_position_ts的asset_position_oid在asset_position不存在,则插入:insertMS()
若asset_position_ts的asset_position_oid在asset_position存在,则更新: updateMS()
若asset_position的asset_position_oid在asset_position_ts不存在,则删除: deleteMS()
所以最后asset_position表中的记录如下
asset_position_oid account_no facility_pool_oid client_group_oid
1003 A3 2002 3002
1001 A4 2002 3002
可是现在出现的问题是若执行完insertMS(),updateMS(),deleteMS()后再commit,本需要update的1001那条记录不存在了
若insertMS(),updateMS() 后commit,再deleteMS(),记录就是正确的
为何呢,其中facility_pool_oid 为2001,client_group_oid 为3001的记录在对应主表中被删除,但facility_pool_oid 为2002,client_group_oid 为3002的记录在对应主表中是存在的
------解决方案--------------------原因是因为update前,那笔记录已经被删除了