如何自动生成这样的字段值?

happy1123 2005-01-08 11:04:26
我的数据表有一个主键字段。想用触发器自动生成它的值。
例:“入库单”表有一个“入库单ID”字段。想让这个字段的格式如“RKD000001”的样子
请问如何实现。希望能给出DEMO原码
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
skywebnet 2005-01-08
  • 打赏
  • 举报
回复
maxbh(maxbh varchar(11), biaoshi varchar(3 )) //maxbh 编号 , biaoshi 单据类型
skywebnet 2005-01-08
  • 打赏
  • 举报
回复
declare @maxbh varchar(11), --最大编号
@rowcount integer -- 影响行数
declare @djlx varchar(11) --单据类型

set @djlx=:djlx --处理传入单据类型

update maxbh set biaoshi=@djlx where biaoshi=@djlx
set @rowcount=@@rowcount

select @maxbh=maxbh from maxbh where biaoshi=@djlx -- 取当前最大编号
set @maxbh=@djlx+REPLICATE('0',11-len(right(@maxbh,8)+1)-3) +ltrim(str(right(@maxbh,8)+1))

update maxbh set maxbh=@maxbh where biaoshi=@djlx -- 更新

if @rowcount=0
begin
set @maxbh=@djlx+REPLICATE('0',11-len(@djlx))
insert into maxbh (biaoshi,maxbh) values (@djlx,@maxbh)
end

select @maxbh as maxbh
xingfuniao 2005-01-08
  • 打赏
  • 举报
回复
在程序中控制吧!!
如果使用觸發器,首先用程序將插入的主鍵設置為不可重復的,例如設置為'####',然後在after insert觸發器中取出數據庫中最大主鍵值+1,然後更新數據庫主鍵為'####'的值!
Frewin 2005-01-08
  • 打赏
  • 举报
回复
有两种方法:
1:入库单ID 为 identity(1,1) 在 select 时
Select 'RKD'+REPLACE(STR(入库单ID,5),' ','0') As 入库单ID
2:入库单ID为 varchar(30),用存储过程分配 入库单ID
ropriest 2005-01-08
  • 打赏
  • 举报
回复
没有主键值,记录写不进去的,怎么执行触发器啊?
还是将主键的生成放到你的记录添加的代码里面控制吧

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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