45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:删除字典数据的步骤

删除字典数据的步骤

2016-09-04 12:54:03 来源:www.45fan.com 【

删除字典数据的步骤

所谓字典就是数据库应用中被其他表(通常加以外键约束)引用的表,如客户表引用客户类型,那么客户类型即为字典表。删除字典数据要考虑是否已被其他数据引用,一般不允许做级联删除。

这个问题想必大家都碰到过,但各有各的做法。本人与若干同事讨论过,将各种做法总结一下。

  1. 物理删除,即用delete SQL删除。如果字典数据被引用,则会抛出违反外键约束的异常,将其封装为可读的信息提示给用户。JDBC中的异常类为SQLException,如何判断是违反外键约束的异常呢?有方法如下:
    • 利用SQLException中的errorCode,这是数据库特有的错误编码。
    • 利用SQLException中的SQLState,在JAVA API DOC中说明这个是SQL99或XOPEN 标准的编码,而且可以用connection的meta data来判断符合哪个标准。经过的试验,说明这个meta data不太好用,但是SQLState还是较为统一的。
        mysql5.0.21 sqlserver2000 oracle10 postgresql8
      ANSI99 SQLState标准的违反外键约束编码为:23000 23000 23000 23000 23503(可能要在BatchUpdateException的nextException中才能取得)
      Connection的meta data中的getSQLStateType(),符合SQL99标准应该为2 2 2 0 2
  2. 逻辑删除。即置表中的一个标记字段为已删除。查询时不可见,但实际还保留在表中。 好处是不用处理数据被引用的情况。它的缺点是,如果数据没有被引用,那么它其实可以被物理删除,但确留在系统中成为垃圾数据;其次在数据有唯一编码的情况下,被逻辑删除的数据实际上还占用着一个编码,有时用户会疑惑,明明表中查不到这个编码,我在新增的数据中使用这个编码却总提示编码已存在。

各位又是用的什么方法来处理的呢?你的方法有何优缺点,不妨一同讨论一下。

 

本文地址:http://www.45fan.com/a/question/72202.html
Tags: 数据 字典 所谓
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部