0

我有以下字段的表格

VouhcerID, VoucherNumber, VoucherDate, etc...

现在的情况是一些凭证被拒绝。我不需要将记录保留在数据库中,但序列号应该保留在数据库中。JV001, JV002, JV003假设如果JV003被拒绝,我现在在数据库中有序列号的以下记录。它来自数据库的记录应该被拒绝,但是当插入新记录时,它应该JV004得到VoucherNumber. 一种选择是在名为的数据库中添加一个布尔字段,isdeletedtrue在记录被拒绝时创建它。任何其他建议

4

3 回答 3

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
于 2012-08-06T08:22:43.830 回答
0

我认为你的选择听起来不错。

另一种选择是将列分成两列

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

而且您必须将两列合并为 ID 列

于 2012-08-06T05:52:11.590 回答
0

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

于 2012-08-06T05:54:41.247 回答