2011-12-05 21 views
2

テーブルにchar主キーを設定することはできますか?たとえば 'WC001'の場合は自動的に1だけインクリメントされますので、pkの次のレコードは 'WC002'となります。SQL Server:自動インクリメントchar pk

誰でも私に例を挙げることはできますか?

おかげで簡単に

答えて

3

ない - しかし、あなたは、通常のINT IDENTITY自動インクリメントの数値IDを持っているし、その後、計算列(SQL Server 2005およびそれ以降の)持続定義することができ - のようなもの:

CREATE TABLE dbo.YourTable 
(ID INT IDENTITY(1,1), 
CharID AS 'WC' + RIGHT('000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED, 

CONSTRAINT PK_YourTable PRIMARY KEY(CharID) 
) 

は、このテーブルに値を挿入しますID列を1, 2, 3, 4, 5, .....、CharID列を自動的にWC001WC002WC003などとなるようにします。

これは永続化された計算列なので、値は常に最新であり、インデックス(プライマリキーと同様)を置くことさえできます。

1

ないが、あなたはこのような何かが必要な場合は、あなたの鍵のアルファと数字の部分を壊すからあなたを止めるものは何もありません。 WC部分をAKeyに、数字をNKeyとし、Nkeyを自動入力します。

あなたがようviewでそれを公開することができますしたい場合:

「カスタム」のアイデンティティを実装
SELECT AKey + CAST(nkey as varchar) as 'Key' 
... 

効率的に同時実行の問題を解決するに関わる非常に多くの要因があるので、うまく機能しません。

SQL Server 2012では、より複雑なIDフィールドのサポートが追加されます。

直接
+0

+1重要な部分は、増分する整数です。残りは、ORMまたはソフトウェアの報告層(IMHO)に属するすべてのプレゼンテーションロジックです。 – Yuck

0

Id IDENTITY(1,1) INTという名前の別の列を作成し、希望する列をIdと0の書式化された数値で構成される計算列として作成することをお勧めします。

関連する問題