-1

会社の購入の詳細を単一のテーブルで管理する必要があります。購入に関与する 3 つの購入部門があり、独自の「購入注文 SlNo」を管理しています。

したがって、自動インクリメント番号を使用することはできず、次のようなものを使用する必要があります。

X-001
X-002

すべてが最初の部門のみに属します

Y-001
Y-002

すべて第二部のみ所属

Z-001
z-002

すべてが3部のみに属します

誰でも私に提案して、ベストプラクティスを提案できますか? (C# を使用)。

4

1 に答える 1

2

最善の解決策は、使用することです

  • ID INT IDENTITY(1,1)数値の自動インクリメントを処理する SQL Server を取得する列
  • その数値を必要な値に変換するための計算された永続化された列

だからこれを試してください:

CREATE TABLE dbo.tblCompany
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   CompanyID AS 'X-' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
   .... your other columns here....
  )

ここで、 ortblCompanyの値を指定せずに に行を挿入するたびに:IDCompanyID

INSERT INTO dbo.tblCompany(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

次に、SQL Server は自動的かつ安全にID値を増やし、、、...... などのCompanyID値を含めます- 自動的に、安全に、確実に、重複はありません。X-00001X-00002

X-PS: などの接頭辞をどこから取得するかはわかりませんY-。この解決策 (接頭辞を固定) を自分の状況 (接頭辞を変更) に適応させる必要がありますが、基本的な解決策は同じままです: let SQL Server は自動番号付けを処理し (これが実行可能な唯一の方法です)、計算された永続化された列を使用して余分なものを追加するだけです。

于 2013-10-21T11:20:26.717 に答える