2009-04-27 1 views
108

テーブルの従業員にプログラム列でID列を追加しようとしています。私の構文に何が間違っているのか分かりません。テーブルを変更する列の構文を追加します。

ALTER TABLE Employees 
    ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1) 

ALTER TABLE Employees ADD CONSTRAINT 
    PK_Employees PRIMARY KEY CLUSTERED 
    (
     EmployeeID 
    ) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

私は間違っていますか?私はスクリプトをエクスポートしようとしましたが、SQL Mgmt StudioはTemp Tableの名前変更の全体を行います。

UPDATE : "COLUMN 'というキーワードの近くに誤った構文があります。

答えて

160

ただ、それはあなたが(これは順番を変更するよりも簡単であるとして)テーブルの先頭に列を追加しようとしている場合は名前の変更、一時テーブルを行うことができADD COLUMN

ALTER TABLE Employees 
    ADD EmployeeID numeric NOT NULL IDENTITY (1, 1) 

ALTER TABLE Employees ADD CONSTRAINT 
     PK_Employees PRIMARY KEY CLUSTERED 
     (
      EmployeeID 
     ) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
     ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
+5

をインクリメント'COLUMN'キーワードは有効です(ただし、n otが必要です)。 – ethanbustad

+1

@ethanbustadこれはDB2とPostgresにも有効です。 –

0

からCOLUMNを削除します。また、Employeesテーブルにデータがある場合は、insert *を実行してEmployeeIDを計算する必要があります。

+1

"順序を変更する方が簡単です" - テーブルを再作成せずに(列テーブルを使用して)列の順序を変更することは可能です(より難しいですが)。 –

+1

リレーショナルデータベースでは、列の順序を決して必要としないので、列を整然と並べようとする場合、その理由は何ですか?列の順序がそれほど重要であった場合、列の順序性を交換または修正するための些細な機能がないのはなぜですか?その理由は、順序性が問題にならないように設計されているからです。 – Shiv

2

テーブルに列を追加するための正しい構文は次のとおりです。あなたの場合は

ALTER TABLE table_name 
    ADD column_name column-definition; 

それは次のようになります。

ALTER TABLE Employees 
    ADD EmployeeID int NOT NULL IDENTITY (1, 1) 

複数の列を追加するには、ブラケットを使用します。

ALTER TABLE table_name 
    ADD (column_1 column-definition, 
     column_2 column-definition, 
     ... 
     column_n column_definition); 

COLUMNをSQL SERVERのキーワードは、変更にのみ使用されます。

ALTER TABLE table_name 
    ALTER COLUMN column_name column_type; 
5

これは、表に新しい列を追加する方法を

ALTER TABLE [tableName] 
ADD ColumnName Datatype 

ある例:

ALTER TABLE [Emp] 
ADD Sr_No Int 

そして、あなたがしたい場合は、自動では、明確にするため

ALTER TABLE [Emp] 
ADD Sr_No Int IDENTITY(1,1) NOT NULL 
関連する問題