100分~~类似数据库外键的一个问题,紧急求助

yleek 2014-03-22 02:48:20
表的结构大概如下
user_id parent_id name
1 0 lilei
2 1 lili
3 1 like

主键时user_id,每一条记录都有一个parent_id,表示user之间的父子关系,如上,lilei是lili和like的父。
现在的要求是,当删除lilei这条记录时,lili和like的parent_id自动置为0。

用UPDATE的问题是,如果lilei下有1百万个孩子,那么UPDATE就不行了,一来会慢,二来where条件没法写。

现在想法是数据库自动完成,类似级联操作。

怎么办,还是我的表设计的不合理。
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gangma2 2014-03-24
  • 打赏
  • 举报
回复
上面的回答验证了下有点问题,修改了下,基本上可以满足要求了: create or replace trigger tri_update_bb after delete on bb for each row declare PRAGMA AUTONOMOUS_TRANSACTION; begin update GANGMA.bb set parent_id=0 where parent_id=:old.user_id; commit; end;
gangma2 2014-03-24
  • 打赏
  • 举报
回复
create or replace trigger tri_update_bb after delete on bb for each row declare v_parent_id number:=:old.user_id; begin update GANGMA.bb set parent_id=0 where parent_id=v_parent_id; end;
流浪川 2014-03-22
  • 打赏
  • 举报
回复
用TRIGGER吧。。

3,491

社区成员

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

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