级联删除在系统开发中是很常见的处理方法,应用系统中很多以业务逻辑建立起来的实体集合形成一个整体,但是他们分布在不同的表中,一个实体消失了(或这是被软删除了),那么跟他对应的(或者隶属于它)一切其他属性都应盖被删除(正常情况下
)。
这里姑且举一个例子:
删除酒店。
酒店拥有:酒店法人(user),酒店房间(room),该酒店的房间类型(rtypes),
酒店房间的照片(rphtoto),酒店照片(hphoto),床位(beds)。
他们的结构是;
1,酒店法人。
2,酒店本体。
3,酒店房间 , 酒店照片。
4,房间类型 , 房间照片 , 床位。
因此,删除酒店应该,自底向上的删除,这样才能将酒店一切信息删除干净,不会出现断层而遗留报废数据。
procedure deletehotel(p_USERID NUMBER,
P_RESULT OUT NUMBER
)
AS
BEGIN
P_RESULT:=-1;
---删除照片
update photoes p
set p.valid=1
where exists(
select /*+RULE*/ 1
from hotel h
where h.hotelid=p.hotelid
and h.valid=0
and h.userid=p_userid
)
and p.valid=0;
---删除房间类型
update roomtype rt
set rt.valid=1
where exists(
select /*+RULE*/ 1
from hotel h
where h.hotelid=rt.hotelid
and h.valid=0
and h.userid=p_userid
)
and rt.valid=0;
----删除床位
delete from beds b
where exists(
select 1
from hotel h,rooms r
where r.hotelid=h.hotelid
and h.valid=0
and r.valid=0
and b.roomid=r.roomid
and h.userid=p_USERID
);
----删除房间
update rooms t
set t.valid=1
where t.valid=0
and exists(select /*+RULE*/1
from hotel h
where h.hotelid=t.hotelid
and h.valid=0
and h.userid=p_userid
);
---删除饭店
update hotel h
set h.valid=1
where h.valid=0
and h.userid=p_userid;
---删除用户
update emsuser u
set u.valid=1
where (u.valid=0 or u.valid=2)
and u.userid=p_userid;
p_result:=0;
END deletehotel;
分享到:
相关推荐
计算机网络个人实习总结是对学习和实践经验的深度反思,旨在提升个人技能和理解。在这个过程中,我深入了解到计算机网络在日常生活和工作中扮演的重要角色,并且掌握了如何将理论知识应用于实际工作场景。 首先,...
linux命令个人总结 1. ls最为常用的命令之一 1. linux 的命令格式: 命令字 命令选项 命令参数 2. cd ~返回用户宿主目录 cd . 用户的当前目录 cd .. 返回上一级目录 3. pwd 查看用户所在的目录 4. mkdir 创建...
### Activiti-API 个人总结方法文档 #### 一、RepositoryService(管理流程仓库核心) **1. 创建部署** - **方法**: `repositoryService.createDeployment()` - **功能**: 创建一个新的部署对象,准备进行流程...
【计算机网络实习知识点总结】 计算机网络实习是一次理论与实践相结合的重要学习经历,它涵盖了多个方面的知识和技术。以下是对实习内容的详细解析: 1. **网络基础知识应用**:实习过程中,我深入理解了计算机...
### Hibernate个人总结 #### 一、理解Hibernate的关系映射 在使用Hibernate进行对象关系映射时,我们需要将实体...以上就是关于Hibernate一对多关系映射的个人总结,希望能够帮助读者更好地理解和应用Hibernate框架。
同时,对于一对一关系,有时还需要考虑是否设置外键约束,以及如何处理删除操作,如使用`cascade`属性实现级联删除。 总结来说,"真真的onetoone"标签暗示了一个关于Hibernate一对一映射的实际示例,无论是通过注解...
- 实现借阅记录的级联删除,当删除借阅者信息时,相应借阅记录也应一并删除。 2. **普通用户**: - 能够查询图书馆的图书信息,包括图书名称、作者和出版社等。 - 可申请账号以获取更多个性化服务。 3. **图书...
在后续的版本中,SQL Server不断演进,提供了更多的高级功能和更好的可扩展性,适用于各种规模的系统,从简单的个人电脑到复杂的多处理器服务器。 SQL Server 201*版本的特点显著,其中包括与Internet的紧密集成,...
根据实际需求,可以选择其他级联类型,如`CascadeType.PERSIST`仅在保存时级联,`CascadeType.REMOVE`仅在删除时级联等。 五、实际应用与注意事项 在实际开发中,一对一关联常用于两个紧密相关的实体,如用户与用户...
此外,还可以使用`@Cascade`定义级联操作,如删除一个部门时是否同时删除所有关联的员工。 **多对一关联(Many-to-One)** 多对一关联是一对一关联的反转,即多个实体对应一个实体。例如,多个员工可以属于同一个...
- `cascade="delete"`:级联删除操作,但在实际应用中较少使用,因为可能引发数据丢失。 - `cascade="all"`:全级联操作,包括保存、更新和删除,适用于一对一关系。 - `cascade="delete-orphan"`:删除未被引用的...
根据给定的信息,我们可以总结出以下关于数据库原理的几个关键知识点: ### 1. 表的创建(CREATE TABLE) 在数据库设计中,首先需要定义表的结构,这通常通过`CREATE TABLE`语句来实现。从给定的部分内容中可以...
`idcard`表存储身份证信息,包括身份证号码(`serial`)和有效期(`expiry`),其中`pid`作为外键引用`person`表的`pid`,并配置了级联删除。 4. Hibernate映射文件 `Person.hbm.xml`文件中,`<one-to-one>`标签...
为了简化操作,我们可以使用`cascade`属性设置级联操作,如`CascadeType.ALL`,这将使保存、删除等操作在主实体上执行时同时作用于从实体。例如: ```java @OneToOne(mappedBy = "user", cascade = CascadeType.ALL...
在设计时,应特别考虑权限控制,例如限制图书馆工作人员只能修改特定的借阅记录,而管理员则拥有全面的管理权限,包括级联删除借阅者信息和催还图书报表的生成。 总结,JavaWeb图书管理系统通过整合现代技术和管理...
例如,当删除一个用户时,可以选择是否同时删除该用户的所有订单。常用的级联类型有`SAVE_UPDATE`、`PERSIST`、`REMOVE`、`REFRESH`和`ALL`。 **懒加载和立即加载(Fetch)** 懒加载是一种优化策略,只在真正需要...
- SSH框架级联操作理解不透彻。 - Ajax与SSH结合使用返回JSON数据初期尝试失败多次。 - **收获**: - 编程分层经验积累。 - 泛型运用能力提升。 - 对SSH框架思想有了更深入的理解。 - 掌握了div+css布局技巧。...
- **串联删除的实现**:介绍了如何在关系中实现级联删除,确保数据完整性。 - **Table 数据类型使用**:教授如何声明 Table 数据类型,即可以用来存储表类型值的变量。 - **触发器与函数的创建**:涵盖了 INSTEAD...
例如,当我们删除一个父实体时,可以选择同时删除所有子实体。`CascadeType`枚举提供了多种级联选项,如`SAVE_UPDATE`, `DELETE`, `ALL`等。 总结: 理解并熟练掌握Hibernate中的关联关系映射配置是每个Java开发者...