web-dev-qa-db-ja.com

SQL Serverデータベースにauto_increment主キーを追加するにはどうすればよいですか?

現在、主キーを持たないテーブルを設定しています。 primary key, no null, auto_incrementを追加するだけです。

Microsoft SQL Serverデータベースを使用しています。単一のコマンドでそれを行うことはできませんが、私が試みるすべてのコマンドは構文エラーを返し続けます。

編集---------------

主キーを作成し、null以外に設定しました。ただし、auto_incrementを設定できません。

私はもう試した:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

NVARCHARを使用しています。これは、NOT NULLをintに設定できないためです。

54
dcp3450

単一のコマンドで実行できます。 「自動番号」のIDENTITYプロパティを設定する必要があります。

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

より正確には、名前付きテーブルレベルの制約を設定するには:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

MSDNの ALTER TABLE and IDENTITY を参照してください

111
gbn

テーブルにすでにデータが含まれており、いずれかの列を識別に変更する場合:

最初に、同じ列を持つ新しいテーブルを作成し、プライマリキーカラムを指定します。

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

次に、標準のinsert- statementを使用して、元のテーブルのすべての行を新しいテーブルにコピーします。

次に、元のテーブルを削除します。

最後に、TempTableの名前をsp_renameを使用して任意に変更します。

http://msdn.Microsoft.com/en-us/library/ms188351.aspx

21
Andreas Ågren

SQL Server Management Studioを介してこのアクションを実行することもできます。

選択したテーブルを右クリック->変更

PKとして設定するフィールドを右クリックします-> Set Primary Key

[列のプロパティ]で[ID指定]を[はい]に設定し、開始値と増分値を指定します。

その後、この種のスクリプトを作成したい場合は、変更したテーブルを右クリックして選択します

「スクリプト表AS」->作成先

そのため、このアクションを実行するための正しい構文を自分で確認できます。

13
ChrisCamp

列がある場合、それは非常に簡単です。

デザイナーを使用して、列をID(1,1)として設定できます。テーブルを右クリック→デザイン→一部左(右クリック)→プロパティ→ID列で#columnを選択します。


プロパティ

enter image description here

ID列

enter image description here

1
gustavo herrera

SQL Server 2008の場合:

  • テーブルを右クリック
  • デザインに行く
  • 数値データ型を選択
  • 新しい列に名前を追加
  • アイデンティティ仕様を「YES」にします
0
Chandan Deb