`
JYLike97
  • 浏览: 22934 次
  • 性别: Icon_minigender_1
  • 来自: 四川
文章分类
社区版块
存档分类
最新评论

关于级联删除个人总结

阅读更多
级联删除在系统开发中是很常见的处理方法,应用系统中很多以业务逻辑建立起来的实体集合形成一个整体,但是他们分布在不同的表中,一个实体消失了(或这是被软删除了),那么跟他对应的(或者隶属于它)一切其他属性都应盖被删除(正常情况下 )。
这里姑且举一个例子:
删除酒店。
酒店拥有:酒店法人(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;
分享到:
评论

相关推荐

    计算机网络个人实习总结.doc

    计算机网络个人实习总结是对学习和实践经验的深度反思,旨在提升个人技能和理解。在这个过程中,我深入了解到计算机网络在日常生活和工作中扮演的重要角色,并且掌握了如何将理论知识应用于实际工作场景。 首先,...

    linux总结

    linux命令个人总结 1. ls最为常用的命令之一 1. linux 的命令格式: 命令字 命令选项 命令参数 2. cd ~返回用户宿主目录 cd . 用户的当前目录 cd .. 返回上一级目录 3. pwd 查看用户所在的目录 4. mkdir 创建...

    Activiti-API 个人总结方法文档

    ### Activiti-API 个人总结方法文档 #### 一、RepositoryService(管理流程仓库核心) **1. 创建部署** - **方法**: `repositoryService.createDeployment()` - **功能**: 创建一个新的部署对象,准备进行流程...

    2019年计算机网络个人实习总结.doc

    【计算机网络实习知识点总结】 计算机网络实习是一次理论与实践相结合的重要学习经历,它涵盖了多个方面的知识和技术。以下是对实习内容的详细解析: 1. **网络基础知识应用**:实习过程中,我深入理解了计算机...

    Hibernate个人总结

    ### Hibernate个人总结 #### 一、理解Hibernate的关系映射 在使用Hibernate进行对象关系映射时,我们需要将实体...以上就是关于Hibernate一对多关系映射的个人总结,希望能够帮助读者更好地理解和应用Hibernate框架。

    hibernate

    同时,对于一对一关系,有时还需要考虑是否设置外键约束,以及如何处理删除操作,如使用`cascade`属性实现级联删除。 总结来说,"真真的onetoone"标签暗示了一个关于Hibernate一对一映射的实际示例,无论是通过注解...

    图书管理系统需求分析与设计 -【精选文档】.doc

    - 实现借阅记录的级联删除,当删除借阅者信息时,相应借阅记录也应一并删除。 2. **普通用户**: - 能够查询图书馆的图书信息,包括图书名称、作者和出版社等。 - 可申请账号以获取更多个性化服务。 3. **图书...

    数据库学习总结报告.doc.docx

    在后续的版本中,SQL Server不断演进,提供了更多的高级功能和更好的可扩展性,适用于各种规模的系统,从简单的个人电脑到复杂的多处理器服务器。 SQL Server 201*版本的特点显著,其中包括与Internet的紧密集成,...

    Hibernate一对一唯一外键关联映射(双向关联)

    根据实际需求,可以选择其他级联类型,如`CascadeType.PERSIST`仅在保存时级联,`CascadeType.REMOVE`仅在删除时级联等。 五、实际应用与注意事项 在实际开发中,一对一关联常用于两个紧密相关的实体,如用户与用户...

    Hibernate关联关系总结

    此外,还可以使用`@Cascade`定义级联操作,如删除一个部门时是否同时删除所有关联的员工。 **多对一关联(Many-to-One)** 多对一关联是一对一关联的反转,即多个实体对应一个实体。例如,多个员工可以属于同一个...

    hibernate 学习笔记3

    - `cascade="delete"`:级联删除操作,但在实际应用中较少使用,因为可能引发数据丢失。 - `cascade="all"`:全级联操作,包括保存、更新和删除,适用于一对一关系。 - `cascade="delete-orphan"`:删除未被引用的...

    QUT数据库原理期末大作业

    根据给定的信息,我们可以总结出以下关于数据库原理的几个关键知识点: ### 1. 表的创建(CREATE TABLE) 在数据库设计中,首先需要定义表的结构,这通常通过`CREATE TABLE`语句来实现。从给定的部分内容中可以...

    Hibernate数据关联技术_1vs1应用案例_笔记

    `idcard`表存储身份证信息,包括身份证号码(`serial`)和有效期(`expiry`),其中`pid`作为外键引用`person`表的`pid`,并配置了级联删除。 4. Hibernate映射文件 `Person.hbm.xml`文件中,`<one-to-one>`标签...

    JPA学习总结(二)--JPAOneToOne双向关联

    为了简化操作,我们可以使用`cascade`属性设置级联操作,如`CascadeType.ALL`,这将使保存、删除等操作在主实体上执行时同时作用于从实体。例如: ```java @OneToOne(mappedBy = "user", cascade = CascadeType.ALL...

    JAVAWEB图书管理系统大作业范文 (2).docx

    在设计时,应特别考虑权限控制,例如限制图书馆工作人员只能修改特定的借阅记录,而管理员则拥有全面的管理权限,包括级联删除借阅者信息和催还图书报表的生成。 总结,JavaWeb图书管理系统通过整合现代技术和管理...

    hibernate的关联映射

    例如,当删除一个用户时,可以选择是否同时删除该用户的所有订单。常用的级联类型有`SAVE_UPDATE`、`PERSIST`、`REMOVE`、`REFRESH`和`ALL`。 **懒加载和立即加载(Fetch)** 懒加载是一种优化策略,只在真正需要...

    在线班级通讯录项目ppt

    - SSH框架级联操作理解不透彻。 - Ajax与SSH结合使用返回JSON数据初期尝试失败多次。 - **收获**: - 编程分层经验积累。 - 泛型运用能力提升。 - 对SSH框架思想有了更深入的理解。 - 掌握了div+css布局技巧。...

    SQL Server 2000 程序设计(高清晰)

    - **串联删除的实现**:介绍了如何在关系中实现级联删除,确保数据完整性。 - **Table 数据类型使用**:教授如何声明 Table 数据类型,即可以用来存储表类型值的变量。 - **触发器与函数的创建**:涵盖了 INSTEAD...

    Hibernate_关联关系映射配置

    例如,当我们删除一个父实体时,可以选择同时删除所有子实体。`CascadeType`枚举提供了多种级联选项,如`SAVE_UPDATE`, `DELETE`, `ALL`等。 总结: 理解并熟练掌握Hibernate中的关联关系映射配置是每个Java开发者...

Global site tag (gtag.js) - Google Analytics