浏览 3114 次
锁定老帖子 主题:如何删除字典数据?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-01
这个问题想必大家都碰到过,但各有各的 做法。本人与若干同事讨论过,将各种做法总结一下。 物理删除,即用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 的试验报告见 http://blog.csdn.net/superbible_cs/archive/2006/09/01/1154315.aspx (是一个表格,这里贴不上。) 逻辑删除。即置表中的一个标记字段为已删除。查询时不可见,但实际还保留在表中。 好处是不用处理数据被引用的情况。它的缺点是,如果数据没有被引用,那么它其实可以被物理删除,但确留在系统中成为垃圾数据;其次在数据有唯一编码的情况下,被逻辑删除的数据实际上还占用着一个编码,有时用户会疑惑,明明表中查不到这个编码,我在新增的数据中使用这个编码却总提示编码已存在。 各位又是用的什么方法来处理的呢?你的方法有何优缺点,不妨一同讨论一下。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-09-01
物理删除是不大可能了,
只能假删除 唯一编码 可以在 编码+删除标记组合完成 比如 删除标记为非0的表示已删除 那么 编码为 01的数据可以有很多分,但是没有被删除的只有1个,数据如下 01 0 01 1 01 2 |
|
返回顶楼 | |