2009-04-27 37 views
108

Tôi đang cố gắng thêm cột nhận dạng theo chương trình vào bảng Nhân viên. Không chắc chắn những gì tôi đang làm sai với cú pháp của tôi.Thay đổi Bảng Thêm Cú pháp Cột

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] 

Tôi đang làm gì sai? Tôi đã cố gắng để xuất khẩu kịch bản, nhưng SQL Mgmt Studio làm một điều đổi tên bảng tạm thời toàn bộ.

CẬP NHẬT: : Tôi nghĩ rằng nó đang nghẹt thở trên câu lệnh đầu tiên với "Cú pháp sai gần từ khóa 'COLUMN'."

Trả lời

160

Chỉ cần loại bỏ COLUMN từ 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

Để làm rõ, các Từ khóa 'COLUMN' chỉ hợp lệ (nhưng n ot yêu cầu) trong MySQL. – ethanbustad

+1

@ethanbustad Nó cũng hợp lệ cho DB2 và Postgres. –

0

Nó có thể làm bảng tạm thời đổi tên nếu bạn đang cố gắng để thêm một cột vào đầu của bảng (vì đây là dễ dàng hơn thay đổi thứ tự). Ngoài ra, nếu có dữ liệu trong bảng nhân viên, nó phải làm chèn chọn * để nó có thể tính toán EmployeeID.

+1

"dễ dàng hơn để thay đổi thứ tự" - Bạn có nghĩa là nó có thể (mặc dù nó là khó khăn hơn) để thay đổi thứ tự của các cột mà không cần tái tạo bảng (thông qua một bảng tạm thời)? –

+1

Trong một cơ sở dữ liệu quan hệ, bạn không bao giờ nên có nhu cầu về thứ tự của các cột vì vậy nếu bạn đang cố gắng sắp xếp gọn gàng các cột, câu hỏi là tại sao? Nếu quy luật cột là rất quan trọng, tại sao không có một chức năng tầm thường nào để hoán đổi hoặc sửa chữa trật tự của các cột? Lý do là nó được thiết kế cho pháp lệnh không quan trọng. – Shiv

2

Cú pháp đúng để thêm cột vào bảng là:

ALTER TABLE table_name 
    ADD column_name column-definition; 

Trong trường hợp của bạn nó sẽ là:

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

Để thêm nhiều cột sử dụng dấu ngoặc:

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

COLUMN từ khóa trong SQL SERVER chỉ được sử dụng để thay đổi:

ALTER TABLE table_name 
    ALTER COLUMN column_name column_type; 
5

này là làm thế nào Thêm cột mới vào bảng

ALTER TABLE [tableName] 
ADD ColumnName Datatype 

Ví dụ

ALTER TABLE [Emp] 
ADD Sr_No Int 

Và Nếu bạn muốn làm cho nó tự động tăng lên

ALTER TABLE [Emp] 
ADD Sr_No Int IDENTITY(1,1) NOT NULL 
Các vấn đề liên quan