0

次のフィールドを持つテーブルがあります

VouhcerID, VoucherNumber, VoucherDate, etc...

今の状況は、バウチャーが拒否されたときです。データベースにレコードを保持する必要はありませんが、シーケンス番号はデータベースに保持する必要があります。拒否されたJV001, JV002, JV003場合、シーケンス番号を持つデータベースに次のレコードがあるとします。JV003データベースからのレコードは拒否されますが、新しいレコードが挿入されるとJV004VoucherNumber. 1 つのオプションは、指定されたデータベースにブール フィールドを追加し、レコードが拒否されたときにisdeletedそれを作成することです。trueその他の提案

4

3 に答える 3

0

私はあなたのオプションがいいですね。

別のオプションは、列を2つの列に分割することです

列1:列の非整数部分(つまり、上記の例ではJV)が含まれます
。列2:数値部分が含まれ、シーケンス番号を維持するintID列として作成できます。

そして、ID列の2つの列を組み合わせる必要があります

于 2012-08-06T05:52:11.590 に答える
0

テーブルを変更して ID 列を追加し、新しい挿入があるたびに、次のように挿入します。

 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

「計算列」を作成してみてはどうでしょうか。例: ('JV'+CONVERT(nvarchar,[Rec_ID],(0)))

于 2012-08-06T05:54:41.247 に答える