Oracle外键delete

lanita 2012-04-17 11:19:31
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的记录在对应主表中是存在的



...全文
64 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanita 2012-05-09
  • 打赏
  • 举报
回复
原因是因为update前,那笔记录已经被删除了

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧