当前位置:编程学习 > JAVA >>

怎样实现数据库表的某一个字段被更新时,为保持字段的唯一性,其它行的该字段也自动更新

例如现在有表:tab_books 字段: | id | name | price | level | 四个字段 {Level 为无重复字段}
假若有数据: [100012] [Java] [100.0] [1]
[100013] [Java] [100.0] [2]
[100014] [Java] [100.0] [3]
[100015] [Java] [100.0] [4]
[100016] [Java] [100.0] [5]
[100017] [Java] [100.0] [8]
问题一:确保 level 字段数据的连续性,比如现在 100016 与 100017 就不连续了,如果值 5,和8之间没有
其他的值了,如何实现把 8,修改成 6. 比如在插入数据[100018]时,level 字段是5 ,而5 在[100016] 已
经存在了,那该怎样实现 新插的数据 5 变成 6

问题二:比如现在更新了 [100014] 行 的 level 字段 的值为 2,那么如何让 [100013] 行的 level 字段
值自动修改成 3 My SQL 数据库 --------------------编程问答-------------------- level 字段可以自增长呀,或者你也可以使用触发器呀! --------------------编程问答--------------------
引用 楼主 fnsx_wfs 的回复:
例如现在有表:tab_books 字段: | id | name | price | level | 四个字段 {Level 为无重复字段}
假若有数据: [100012] [Java] [100.0] [1]
[100013] [Java] [100.0] [2]
[100014] [Java] [100.0] [3]
[100015] [Java] [100.0] [4]
[100016] [Java] [100.0] [5]
[100017] [Java] [100.0] [8]
问题一:确保 level 字段数据的连续性,比如现在 100016 与 100017 就不连续了,如果值 5,和8之间没有
其他的值了,如何实现把 8,修改成 6. 比如在插入数据[100018]时,level 字段是5 ,而5 在[100016] 已
经存在了,那该怎样实现 新插的数据 5 变成 6

问题二:比如现在更新了 [100014] 行 的 level 字段 的值为 2,那么如何让 [100013] 行的 level 字段
值自动修改成 3


1、每次插入数据前都查询count(*),并且对新插入的level复制为count(*)+1
2、如果修改某条记录的level值,需要考虑的情况较多;如果是修改已经存在的值,则只需要做一次替换。
10014的level改成2,那么同时把10013的level的值改成3


--------------------编程问答--------------------
引用 1 楼 longtian1213 的回复:
level 字段可以自增长呀,或者你也可以使用触发器呀!


自增长的话,如果删除了某一条数据,则还得手动改值!!! --------------------编程问答--------------------
引用 3 楼 liangtu33 的回复:
Quote: 引用 1 楼 longtian1213 的回复:

level 字段可以自增长呀,或者你也可以使用触发器呀!


自增长的话,如果删除了某一条数据,则还得手动改值!!!

触发器吧!在新增,更新和删除都加上触发器,或者跑定时任务,整理数据,看那个方便了! --------------------编程问答-------------------- 你每次更新操作(修改或者插入、删除)之后加上2句SQL
1、删除 level列
2、重新插入该列 并设置为自动增长 

该方法是最直接 最简便的 --------------------编程问答-------------------- 数据库   表触发器    
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,