用jdbc怎么删除想关联的主从表

qq278095755 2008-07-10 04:24:47
请大家帮忙写一下sql语句.
如果用jdbc操作数据库,怎么来删除相关联的主从表呢?
例如,部门表和员工表,如果删除一个部门,就应该删除改相应的员工,请大家写一下sql语句.
...全文
281 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisl2003 2008-07-10
  • 打赏
  • 举报
回复
JDBC的话,6楼说的有理。
用hibernate我就不是太清楚了,没做过。学习一下
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
*^_^*
qq278095755 2008-07-10
  • 打赏
  • 举报
回复
恩...结贴...
模拟人生 你去开源、框架那个模块接分吧,我在那里也发了一个这样的同样的帖子“在hibernate用hql删除主从表失败 ”,也是刚发布的。
呵呵...麻烦了...
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 huangyangweiyue 的回复:]
本身你要在主表实例中 定义一个Set类型的 子表实例属性。
然后 主表实例对象的 .add()(好似是这个方法)可以把 子表对象加进去。
然后把这个加完的对象强转成主表实例对象就可以操作了。
你删除主表信息 连带就把子表的信息删除了。
[/Quote]
caoze 2008-07-10
  • 打赏
  • 举报
回复
把握好删除次序就ok。
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
不是,我这没有myEclipse插件,没法给你弄~~~~~

本身你要在主表实例中 定义一个Set类型的 子表实例属性。
然后 主表实例对象的 .add()(好似是这个方法)可以把 子表对象加进去。

这样你删除主表信息 连带就把子表的信息删除了。

qq278095755 2008-07-10
  • 打赏
  • 举报
回复
我写的hql语句有问题么?
delete from Note where id=?
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
我不知道你代码怎么写的,首先 你要把要关联删除的表实例加到主表实例中,
session.delete("主表实例") 就可以关联删除了。你的配置文件没问题

代码的事
qq278095755 2008-07-10
  • 打赏
  • 举报
回复
上面就是配置文件,我已经设置好级联删除了呀...大伙帮忙看看.
qq278095755 2008-07-10
  • 打赏
  • 举报
回复
<set name="renotes" inverse="true" cascade="all">
<key>
<column name="id" not-null="true" />
</key>
<one-to-many class="com.longtop.struts.note.vo.Renote" />
</set>

<many-to-one name="note" class="com.longtop.struts.note.vo.Note" fetch="select">
<column name="id" />
</many-to-one>
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
要在主表配置文件中配置 级联的~~~

<set>元素中~
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
把 配置文件发出来看看

主表.xml的<set>属性中配置发出来
qq278095755 2008-07-10
  • 打赏
  • 举报
回复
我在hibernate里设置了级联删除,如果用hibernate里的delete()方法,可以级联删除成功.但自己写的hql语句却删除失败,也没错误提示.
String hql = "delete from Note where id=?";
Query q = this.session.createQuery(hql);
q.setInteger(0,id);
q.executeUpdate();
请大家给解释下.
imA 2008-07-10
  • 打赏
  • 举报
回复
建立Foreign key constraint的之后指定on delete cascade

alter table <table_name> add constraint <constraint_name> foreign key on (<columns>) references <parent_table>(<columns>)
on delete cascade
老紫竹 2008-07-10
  • 打赏
  • 举报
回复
分2次删除吧,级联不是每个数据库都支持的。也不是很灵活。容易出现误操作。
1 删除该部门的人员
2 删除部门

实际操作,不可能删除人员,只会
1 调动到其它的部门
2 设置为离职,部门设置为停用,因为有人员的部门是不能删除的!
qq278095755 2008-07-10
  • 打赏
  • 举报
回复
怎么在数据段设置级联删除呢?
请大家用mysql或者oracle举例.
huangyangweiyue 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 imA 的回复:]
delete from deployee where deptid='value'
delete from dept where deptid='value';
[/Quote]
解决1:
按where传的值 执行2次删除。

解决2:
主外键表,设置级联删除。
jingulang 2008-07-10
  • 打赏
  • 举报
回复
删部门
然后删那个部门的所有员工

不行吗?
imA 2008-07-10
  • 打赏
  • 举报
回复
级联删除啊,可以在数据库端设置级联删除,或者使用sql语句(前提是员工表中部门ID字段)
delete from deployee where deptid='value'
delete from dept where deptid='value';

就可以了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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