2012-01-23 6 views
1

我々は固有の番号と番号が他で使用することはできませんが作成されますOracleのための上記のコードを持っているSQL Serverの代替の選択<sequence> SQL ServerのOracleのデュアルから.nextval?

でno独自のシーケンスを作成する方法はあります。

同様に、SQL Serverで一意のシーケンス番号を作成する方法は?

いくつかのいずれかのみ次期SQL Serverの2012 SQL標準は、シーケンスオブジェクトをサポートしてい準拠して、この

答えて

0

で私を助けて。 SQL Serverの任意の現在のバージョンで:-((2008 R2および下記)あなたがでてアイデンティティcontstraintの列を使用する必要があります。これは1から始まり、それらをインクリメントするID列の値を生成します

CREATE TABLE t1 
(
    id  int identity(1,1), 
    somecol varchar(50) 
); 

1.

+0

いいえ、私は複数のテーブルで欲しいとは一意でなければなりません。ここで私が使用する方法は、最初にID列にデータを生成し、それからデータをフェッチします。しかし、100人のユーザーが同時にフォームを送信したときには、それに従うという良い仕組みとは思えません。 – smilu

+0

それから、あなたはそれをOracleでやっているようにすることはできません(SQL Server 2012を待たない限り)! C#またはVB.NETでユーザー定義のデータ型を作成し、アセンブリをインポートすることができます。 – Mithrandir

1

シーケンスの手順は、SQL Server 2012で追加されている - しかし、これはかなりまだとしてリリースされていないあなたは、事前にそれらを試してみたい場合は、製品のリリース候補がそれらを持っている

た場合。シーケンスは1つのテーブルだけで使用されるため、IDカラム機能を使用すると、開始番号とthを指定できます1レコードあたりの付加価値。

複数のテーブルにわたって使用できるシーケンスを探している場合は、SQLサーバー内にIDフィールドの単一列を持つ専用テーブルを作成する必要があります。また、.nextvalテーブルに行を挿入して新しい番号を取得します。テーブルはシーケンスのように動作します。テーブルは時間の経過とともにいっぱいになり、テーブル内にレコードを保持する必要はなく、IDは現在の値を格納し、増分はシステムテーブルの次の値を取得します。

+0

いいえ、私は複数のテーブルにしたい、それは一意でなければなりません。ここで私が使用する方法は、最初にID列にデータを生成し、それからデータをフェッチします。しかし、100人のユーザーが同時にフォームを送信したときには、それに従うという良い仕組みとは思えません。 – smilu

+0

あなたは正しいです - それは大きなメカニズムではありません - それは動作を模倣しますが、それはあまりにもオーバーヘッドかどうか、いくつかの負荷テストで見つける必要がありますオーバーヘッドで。 – Andrew

関連する問題