データをテーブルに保存していますが、シリアル番号の列も必要です。それ、どうやったら出来るの?(私はこれをC#で行っています、おそらくそれは重要です。)
これはかなり単純なはずですが、グーグルは成功していません。
編集:私は整数を保存したくありません。整数を作成して作成と保存の間に保存すると、別のクエリが同じ数値を同時に保存しようとし、2つのエントリが取得されるため、保存時にSQLに作成するコマンドを与えたいと思います。同じ番号で。)
データをテーブルに保存していますが、シリアル番号の列も必要です。それ、どうやったら出来るの?(私はこれをC#で行っています、おそらくそれは重要です。)
これはかなり単純なはずですが、グーグルは成功していません。
編集:私は整数を保存したくありません。整数を作成して作成と保存の間に保存すると、別のクエリが同じ数値を同時に保存しようとし、2つのエントリが取得されるため、保存時にSQLに作成するコマンドを与えたいと思います。同じ番号で。)
使用IDENTITY
:
CREATE TABLE YourTable
(
ID INT IDENTITY
)
新しいレコードを挿入するたびに、SQL Serverがこの値の増分を処理します(2つのレコードが同じ番号を持つことはなく、一意です)。
最善のアプローチはプログラムによるものではありませんが、データベースに増分フィールドを自動的に作成させます。SQL Serverでは、これはID列と呼ばれます。
挿入ステートメントでは、その列が存在しないかのようにスキップするだけですが、SQLServerによって自動的にインクリメントされてデータが入力されます。
Uniqueidentifierは問題を解決しますが、スケーラブルではありません。結果のインデックスが非常に大きく、その値が常に増加するわけではないため、列はクラスター化インデックスの作成には適していません(明確に定義されたクラスター化インデックスに対する制限)。
キーワードIDENTITYは非常に適切であり、必要に応じて整数データ型(smallint、int、bigint ...)から選択でき、関数scope_identity()を介して割り当てられた最後の値を安全に取得できます。
IDENTITY
sqlで利用可能な使用。以下は例です
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
シリアル番号を主キーNOTNULLおよび自動インクリメントとして定義します。これがお役に立てば幸いです。
GUID( SQL Serverでは別名UNIQUEIDENTIFIERデータ型)の使用についてどう思いますか?
DECLARE @myid uniqueidentifier = NEWID();
SELECT @myid