怎么在一列中自动编号?因为有特殊的要求,所以不能在数据库中设为Autoincrease.

x_eva 2001-12-06 04:20:09
现在有五个表,要求对其中的记录进行编号,要求:
1:自动赋值,形式为“BS0001”、“BS0002”……;
2、如果有已删除的记录,其编号应优先使用。
头都大了,各位高手帮帮忙!
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shouzi 2001-12-06
  • 打赏
  • 举报
回复
u p
wzgyyh 2001-12-06
  • 打赏
  • 举报
回复
写错了,修改
string ls_bh
select count(*) into :count from table1 ;
select max(*) into :ls_max from table1 ;
if count = long(left(ls_max ,3)) then
ls_bh = "BS" +string(long(left(ls_max ,3)) + 1) //没有删除时
else
for i = 1 to count
ls_bh = "bs""BS" +string(i,"000")//格式化成“00i”
select count(*) into count1 from table1 where table1.bh = :ls_bh
if count1 < 1 then //没有该号时
ls_bh = "BS" +string(,"000")
exit //退出循环,此法速度较慢,可优化,如分段测试
end if
next

//流程
首先查询出数据数量和最大值(可以查出来),比较最大值和数据数量,如果相等,证明没删除
数据,反之,则从小到大挨个查询某一个号的数量,如果该号数量小于一,则不存在,返回该号
即可
哈哈,如果编号不能比较大小,就惨了。


wzgyyh 2001-12-06
  • 打赏
  • 举报
回复
string ls_bh
select count(*) into :count from table1 ;
select max(*) into :ls_max from table1 ;
if count = long(left(ls_max ,3)) then
ls_bh = "BS" +string(long(left(ls_max ,3)) + 1) //没有删除时
else
for i = 1 to count
ls_bh = "bs"
select count(*) into count1 from table1 where table1.bh = "BS" +string(i,"000")//格式化成“00i”
if count1 < 1 then //没有该号时
ls_bh = "BS" +string(,"000")
exit //退出循环,此法速度较慢,可优化,如分段测试
end if
next

//流程
首先查询出数据数量和最大值(可以查出来),比较最大值和数据数量,如果相等,证明没删除数据,反之,则从小到大挨个查询某一个号的数量,如果该号数量小于一,则不存在,返回该号即可
哈哈,如果编号不能比较大小,就惨了。


windlai 2001-12-06
  • 打赏
  • 举报
回复
用触发器轻松搞定
wzgyyh 2001-12-06
  • 打赏
  • 举报
回复
string ls_bh
select count(*) into :count from table1 ;
select max(*) into :ls_max from table1 ;
if count = long(left(ls_max ,3)) then
ls_bh = "BS" +string(long(left(ls_max ,3)) + 1)
else
x_eva 2001-12-06
  • 打赏
  • 举报
回复
谢谢killerdanny(danny),我一直想的是建一个表存储已删除的记录,实在是太麻烦了。
调试中,欢迎继续发表高见!
am2000 2001-12-06
  • 打赏
  • 举报
回复
String ls_row
For i=1 to dw_1.Rowcount()
dw_1.SetItem(i,'sequence',i)
killerdanny 2001-12-06
  • 打赏
  • 举报
回复
你这样设计,在表中加个删除标志的列,初始为FALSE,删除只是把该列致为TRUE!
然后每次插入新的记录的时候,用FIND找到第一个有删除标志的记录,然后把其他列清空,只保留‘BS0001’这样的列,其他列负伤新值。如果该表内没有已被删除的列,就INSERT吧!
序列号,你自己生成不就行了!SELECT MAX()

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧