客户编码问题?(在线等,马上结帖)

shyuan 2003-07-23 04:47:28
我建了一个表client_info, 客户号clientno 是nvarchar(5)类型。我设计每一个客户从C1000开始递增。请问每新增一个客户,怎样实现clientno象identity类型一样递增,插入语句该怎么写?
我只知道一种最土的办法:select top 1 clientno from client_info order by clientno desc。然后把clientno+1,再插入client_info表中。请问各位老大,有什么更好的办法?

...全文
34 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-07-23
  • 打赏
  • 举报
回复
写一个函数,放在默认值里:
create function getNumber()
returns char(5)
as
return (select right('00000'+cast(isnull(max(字段),0)+1 as varchar(5)),5) from 表)
go

你在你的表里的那个字段的默认值里写:
dbo.getNumber()
CrazyFor 2003-07-23
  • 打赏
  • 举报
回复
写自定义函数生成最新的编号,

再给字段加默认值:dbo.yourFun()
firetoucher 2003-07-23
  • 打赏
  • 举报
回复
select 'C1' + max(cast(subsstring(clientno,3,length(clientno)-2) as int)) + 1
from client_info
nchln 2003-07-23
  • 打赏
  • 举报
回复
用select Max(clientno)+1 from client_info就要考虑多用户使用时号码的重复,需要建立表的锁定;另外建一个存放号码的表,每次访问时先将号码加1,然后取出去,不过这样的话,可能会出现号码不连续。
friendliu 2003-07-23
  • 打赏
  • 举报
回复
CREATE function autoadd()
returns char(5)
as
begin
return(select 'C'+right(cast(1000+rows as char(5)),4) from sysindexes where id=object_id('a'))
end

用字段的默认值是函数来实现....
愉快的登山者 2003-07-23
  • 打赏
  • 举报
回复
select max(clientno) from client_info
97866 2003-07-23
  • 打赏
  • 举报
回复
select Max(clientno) from client_info
caiyunxia 2003-07-23
  • 打赏
  • 举报
回复
建立一个存放号码的表,每次从此表中读
or
select max(clientno) from client_info

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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