首页 新闻 赞助 找找看

如何级联更新外键字段

0
悬赏园豆:30 [已解决问题] 解决于 2012-02-20 21:17

两个表 class{cid(pk),cname}, student{sid,sname,scid(fk)}  student跟class是一对多关系student里的scid是参照class里的cid

实体类:

class{

     private string cid;

    private string cname;

    @id

    public string getcid();

    ``````````````

}

student{

   private string sid;

   private string sname;

   private Class class;

  @manytoone

  @JoinColumn(name="cid")

  public Class getclass();

}

现在数据库里已经有了一条记录:

class表:001 高三

student表:123456 小明 001

我要修改class表里的cid:001 想级联更新student表里的scid:001

用:Query query = session.createQuery(update Class set cid='002' where cid='001'")

query.executeUpdate();

结果报错:由于有外键关联而不能执行

 

 

 

黄辉杰的主页 黄辉杰 | 初学一级 | 园豆:134
提问于:2011-12-05 11:57
< >
分享
最佳答案
0

第一种方式,把关联的student的数据删除掉,再删除class的那条数据

第二种方式,class表添加个字段区分数据是否是删除的,查询的时候在条件中判断只查询没有被删除的数据,删除的时候只需要修改这个字段的值设置为删除状态。

收获园豆:30
LCM | 大侠五级 |园豆:6876 | 2011-12-05 15:19

不太懂。其实我想要的就是当我修改class表里面主键cid时,会同时级联修改student表里的外键scid

黄辉杰 | 园豆:134 (初学一级) | 2011-12-05 16:25
其他回答(1)
0

把关联Student的数据都删除掉,就没有外联数据了,就可以删除Class的那条数据了。

悟行 | 园豆:12559 (专家六级) | 2011-12-05 12:26

我是要在class表里修改主键cid,然后级联修改student表里面的scid,而不是删除

支持(0) 反对(0) 黄辉杰 | 园豆:134 (初学一级) | 2011-12-05 16:23

@JR是菜鸟: 那也是一样的道理,先修改student的,再修改class的。

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2011-12-05 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册