关于纠正记录排序的问题

avenger 2002-07-12 12:46:57
假设表结构为
book
=================
book_id int(自动编号)
book_code int(书本的三位编号)
book_name varchart(书名)

在此表中,删掉一条数据后,再加一条数据时,新加数据的id字段会自动加一,这样没错。表的book_code字段是程序控制的。新加一条的值是当前最大的code值的两位,依次类推。

想要实现的过程为:
现在假设有三条记录
book
===================
book_id book_code book_name
1 002 <<图书一>>
2 004 <<图书二>>
3 008 <<图书三>>

我删除2,再加一条图书四的话。那么会多出一个book_id为4,book_code为016 的记录。
我想要实现的就是,如何在插入新记录的时候,能判断一下,前面的记录有没有间隔,如果有间隔,就自动补上以前的间隔。
也就是当我执行刚才的删除和增加操作后,数据库会变成
book
===================
book_id book_code book_name
1 002 <<图书一>>
3 008 <<图书三>>
4 004 <<图书四>>    ‘注意这条记录的book_code值,并没有加倍,而是补上了删除掉的记录2的原值。

而不会变成:
book
===================
book_id book_code book_name
1 002 <<图书一>>
3 008 <<图书三>>
4 016 <<图书四>>

就上面这么多。我说了这么多,也不知道大家有没有明白我的意思。。
如果有明白的,希望能给个答复。急用。谢了。。。
...全文
9 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
avenger 2002-07-12
楼上的朋友并没有解决自动判断是否隔位的问题。
saucer(思归)的方法看起来是可行的。
我先试一下罢。
回复
水墨画 2002-07-12
sql = "select book_code from book order by book_code "
set rs = conn.execute(sql)
if not rs.eof then
rs.movelast
book_code = book_code * 2

sql = "insert into book (book_code,book_name) values ('" & book_code & "','" & book_name & "')"
conn.execute(sql)

回复
grooving 2002-07-12
给你个思路吧:
可以不设数据库为自增长。在每加的一条数据里做出判断。要加入的数字是多少。
回复
saucer 2002-07-12
sql = "select book_code from book order by book_code"
set rs = conn.execute(sql)

book_code = 2
do while not rs.eof
if book_code <> clng(rs("book_code")) then
exit do
end if
book_code = book_code * 2
rs.movenext
loop


sql = "insert into book (book_code,book_name) values ('" & book_code & "','" & book_name & "')"
conn.execute(sql)
回复
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2002-07-12 12:46
社区公告
暂无公告