0

構文関連の質問を投稿するのは嫌いですが、正直なところ、生の SQL ステートメントを書いた経験があまりありません。これが簡単な質問であれば申し訳ありません。数百のエントリを持つテーブルがあり、テーブルの作成者が ID 列を主キーとして指定するのを忘れ、ID 制約を設定するのも忘れていました。そのため、古い ID 列を削除して新しい ID 列を作成し、それを主キーおよび ID 列として設定する必要があります。SSMS を使用してテーブルを手動で変更できることはわかっていますが、クライアントには既にこのデータベースが運用されており、この変更はいくつかの異なるテーブルに対して行う必要があるため、クライアントに渡すことができるスクリプトを作成する必要があります。スクリプトは次のようになります。

    ALTER TABLE tblName
        DROP COLUMN Table_ID
        ADD Table_ID int PRIMARY KEY IDENTITY(1,1) NOT NULL

上記のクエリを実行すると、次のメッセージが表示されます。

    Msg 102, Level 15, State 1, Line 3
    Incorrect syntax near 'Table_ID'.

何が欠けているのか誰か教えてもらえますか?

4

4 に答える 4

1

構文図によると、identity() は列定義の一部です。列を作成している場合にのみ、オプションとして使用できるようです。

これは、identity() を使用して新しい列を作成するために機能するはずであることを意味します。

alter table tblName
add new_column_name integer not null identity(1, 1);

これにより、その新しい列が主キーになります。

alter table tblName
add constraint new_column_name_pk
primary key (new_column_name);

これら両方のステートメントを 1 つのトランザクションで実行したい場合があります。あなたはしないかもしれません。

私は、列を削除する前に、すべての制約を含む新しい列を追加してデータを入力し、すべてが期待どおりに進んだことを確認することを好みます。

于 2013-05-29T23:42:10.307 に答える
1

私がしなければならなかったのは、削除操作と追加操作を 2 つの ALTER TABLE 操作に分離することだけでした。

    ALTER TABLE tblName
        DROP COLUMN Table_ID

    ALTER TABLE tblName
        ADD Table_ID int PRIMARY KEY IDENTITY(1,1) NOT NULL
于 2013-05-30T16:25:08.857 に答える
0

既存のテーブルに主キー定数を使用して ID フィールドを作成します。

alter table TableName 
add columnName int not null
primary key identity(1,1)
于 2013-12-18T18:12:56.050 に答える
0

id 列が既に ID である場合は、テーブルを変更して id 列を主キーにするだけです

  ALTER TABLE TableName
  ADD PRIMARY KEY (Id)

そうでない場合は、列にもその変更を加えます。

   alter table TableName
   alter column id int not null Identity(1,1)
于 2013-05-29T21:06:04.380 に答える