現在、主キーを持たないテーブルを設定しています。 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に設定できないためです。
単一のコマンドで実行できます。 「自動番号」の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 を参照してください
テーブルにすでにデータが含まれており、いずれかの列を識別に変更する場合:
最初に、同じ列を持つ新しいテーブルを作成し、プライマリキーカラムを指定します。
create table TempTable
(
Id int not null identity(1, 1) primary key
--, Other columns...
)
次に、標準のinsert
- statementを使用して、元のテーブルのすべての行を新しいテーブルにコピーします。
次に、元のテーブルを削除します。
最後に、TempTable
の名前をsp_rename
を使用して任意に変更します。
SQL Server Management Studioを介してこのアクションを実行することもできます。
選択したテーブルを右クリック->変更
PKとして設定するフィールドを右クリックします-> Set Primary Key
[列のプロパティ]で[ID指定]を[はい]に設定し、開始値と増分値を指定します。
その後、この種のスクリプトを作成したい場合は、変更したテーブルを右クリックして選択します
「スクリプト表AS」->作成先
そのため、このアクションを実行するための正しい構文を自分で確認できます。
SQL Server 2008の場合: