--为产品或者商品随机生成6位数的数字编码方案
--准备阶段
--建立一个表,生成100000到999999顺序编码
create table #no
(
 id int
)
declare @id int 
set @id=1
while(@id<=999999)
begin
 insert into #no values(@id)
 set @id=@id+1
end
--建立随机编码表
create table RNo
(
 id int identity(1,1),
 no int
)
--插入随机内容
insert into RNo(no) select id from #no order by NEWID()
--模拟商品表
create table Product
(
 ProductId int identity(1,1),
 ProductNO int,
 ProductName varchar(100)
 --其他字段
)
--插入产品表的时候,通过产品表的自增ID读取对应的随机数字编码更新到产品表即可实现随机的编码生成。
--避免了程序生成随机编码引起的2个小问题
 --1.每次生成都要做重复检查
 --2.后期随机编码容易重复,要继续随机生成。
--存在一个问题就是一旦删除产品后,编码将不能被再次使用。
declare @pid int
insert into Product(ProductName) values('土豆')
select @pid=SCOPE_IDENTITY()
--这里注意需要检查 rno 是否大于 999999 ,如果不够了 需要继续生成新的编码(增位了)
update Product set ProductNO=(select no from rno where id=@pid) where ProductId=@pid
--检查结果
select * from Product

--ProductId   ProductNO   ProductName
----------- ----------- ---------------------------------------------------------
--1           782264      土豆
--(1 行受影响)