我有一个包含以下字段的表
VouhcerID, VoucherNumber, VoucherDate, etc...
现在的情况是一些代金券被拒绝。我不需要在数据库中保留记录,但序列号应该保留在数据库中。假设我在数据库中有序列号为JV001, JV002, JV003
的以下记录,如果JV003
被拒绝,现在。它从数据库中的记录应该被拒绝,但当插入新记录时,它应该得到JV004
作为VoucherNumber
。一种选择是在数据库中添加一个名为isdeleted
的布尔字段,并在记录被拒绝时将其设为true
。任何其他建议
我认为您的选择听起来不错。
另一种选择是分离两列
第1列:包含该列的非整数部分(即上例中的JV)
列2:包含数字部分,您可以将其作为int标识列,该列将维护序列号。
您必须将ID列
创建一个"计算列"怎么样。例如:("JV"+CONVERT(nvarchar,[Rec_ID],(0))
更改表以添加标识列,如果有新的插入,只需插入如下:
alter table yourtable add id int identity(1,1)
INSERT INTO yourtable(VouhcerID,...)
select 'JV'+CASE WHEN len(cast(id as varchar)=1 then '00'+cast(id as varchar) else CASE WHEN len(cast(id as varchar)=2 then '0'+cast(id as varchar) else cast(id as varchar) end end,... from table