删除记录,但保留数据库中的序列号



我有一个包含以下字段的表

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