web-dev-qa-db-ja.com

テーブルの列を自動インクリメントするにはどうすればよいですか?

SQL Server 2008を搭載したVisual Studio2010で製品インスタンステーブルを使用してデータベースを構築していて、ProductId列を自動インクリメントする必要がありますが、列のプロパティメニューで属性を見つけることができません。必要に応じて、c#とasp.netを使用しています。テーブルを作成し、列を自動インクリメントに設定するコードを見てきましたが、これはコーディングの最初の回避策であるため、コードをどこに置くかわかりません。新しいテーブルを作成する唯一の方法は、それが理にかなっている場合、VS GUIを使用することです。

14

Identity仕様をyesに設定します。

enter image description here

サンプルSQL:

CREATE TABLE [dbo].[HomePageImages](
    [RecordId] [int] IDENTITY(1,1) NOT NULL,
    [AlternateText] [varchar](100) NOT NULL,
    [ImageName] [varchar](50) NOT NULL,
    [NavigateUrl] [varchar](200) NOT NULL,
    [ImageUrl]  AS ('/content/homepageimages/'+[ImageName]),
    [DisplayFrom] [datetime] NULL,
    [DisplayTo] [datetime] NULL,
 CONSTRAINT [PK_HomePageImages] PRIMARY KEY CLUSTERED 
(
    [RecordId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
29
David

SQL Server 08では、 "Identity"プロパティを 'Yes'に設定し、その初期値(デフォルトは1)とその増分(デフォルトは1)を定義します。

これにより、新しいレコードごとに1ずつ増加します。

6
taylonr

sQLでidentity yesプロパティを使用する必要があります。

それは下部のプロパティウィンドウにあります-実行中のウィンドウではありません。

これにより、新しいレコードが挿入されるたびにIDが自動的にインクリメントされます。

Id値を取得するには、sqls SCOPE_IDENTITY()関数を使用して、作成されたIDを取得できます。

2
James Kyburz

SSMSでは、オブジェクトエクスプローラーでテーブルを見つけて右クリックし、[デザイン]を選択します。自動インクリメントする列を選択し、その下の[列のプロパティ]セクションを確認します。 [+]記号の付いたID仕様項目が必要です。それを展開し、[Is Identity]で[Yes]を選択し、必要に応じて増分(新しい値を最後の値よりも1だけ大きくしたい場合があります)と開始値を「シード」として設定します(1は空のテーブルの場合は問題ありませんが、既存のデータがある場合は、シードを最大のレコードよりも大きくなるように設定します。

1
KeithS