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

时间:2012-08-06 05:44:13

标签: sql-server database sql-server-2008

我有以下字段的表格

VouhcerID, VoucherNumber, VoucherDate, etc...

现在情况是一些凭证被拒绝了。我不需要在数据库中保留记录,但序列号应保留在数据库中。假设我在序列号JV001, JV002, JV003的数据库中跟踪记录现在如果JV003被拒绝。应该拒绝来自数据库的记录,但是当插入新记录时,它应该JV004VoucherNumber。一种选择是在名为isdeleted的数据库中添加一个布尔字段,并在记录被拒绝时将其设为true。任何其他的建议

3 个答案:

答案 0 :(得分:0)

我觉得你的选择听起来不错。

另一个选项是分隔列到两列

第1列:包含列的非整数部分(即上例中的JV)
第2列:包含数字部分,您可以将其设为 int identity 列,该列将保留序列号。

您必须将ID列的两列合并

答案 1 :(得分:0)

如何创建“计算列”。例如:('JV'+ CONVERT(nvarchar,[Rec_ID],(0)))

答案 2 :(得分: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
相关问题