问一个按时间排序的触发器的问题

cjl8882000 cjl8882000 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如题 做了个按时间排序的触发器
几经调试 已经成功 代码如下
CREATE TRIGGER new_insert ON dbo.ShrinkOrder
after INSERT
AS
declare @Orderid char(11)
declare @TODAY char(8)
declare @num int
declare @count int
begin
select @TODAY=convert(char(8),getdate(),112)
select @num=(select count(orderid) from shrinkorder where orderid like @today+'%')
if @num=0
begin
select @count=0
end
else
begin
select @count=(select top 1 convert(int,right(OrderId,3)) from ShrinkOrder where orderid like @TODAY+'%' order by orderid desc)
end
select @Orderid=@TODAY+right('000'+ltrim(convert(char(3),@count)+1),3)
update ShrinkOrder set OrderId=@Orderid where OrderId='9999999999'
end
但是有个问题没弄明白 我定义的局部变量@count为整型 最后在更新@Orderid的时候对@count的加1操作 为什么要在变成字符型之后才行?
问题就是这句
select @Orderid=@TODAY+right('000'+ltrim(convert(char(3),@count)+1),3)
如果我在之前加1 也就是
select @Orderid=@TODAY+right('000'+ltrim(convert(char(3),@count+1)),3)这样
自动生成的编号就变成200609131而不是20060913001了…………
请问下 这到底是为什么啊?
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
cjl8882000
MS-SQL Server 34,876 成员 254,635 内容