2009-04-16 44 views
36

Làm cách nào để xóa cột khỏi bảng hiện có?Xoá cột trong MS SQL Server

+0

bản sao có thể có của [Cách xóa cột khỏi bảng hiện có?] (Http: // stackoverflow.com/questions/5626344/how-to-remove-a-cột-từ-một-hiện-bảng) –

+1

Thực ra, câu hỏi khác được viết 2 năm sau câu hỏi này sao cho có thể trùng lặp. –

Trả lời

82

Lệnh bạn đang tìm kiếm là:

alter table tblName drop column columnName 

nơi tblName là tên của bảng và columnName là tên của cột, nhưng có một vài điều bạn có thể cần để làm đầu tiên.

  • Nếu có bất kỳ tham chiếu khóa lạ nào vào cột, trước tiên bạn cần phải loại bỏ chúng trước.
  • Nếu có chỉ mục sử dụng cột đó, bạn sẽ cần loại bỏ chỉ mục hoặc điều chỉnh để không sử dụng cột đó.

Hãy nhớ rằng hiệu suất của lệnh này có thể không nhất thiết phải tốt. Một tùy chọn là đợi một khoảng thời gian không hoạt động khi bạn có thể chắc chắn không ai sẽ truy cập cơ sở dữ liệu, đổi tên bảng hiện tại, sau đó sử dụng create tableinsert into ... select from để chuyển các cột bạn không muốn xóa.

Một trong những phiên bản sau này của Oracle thực sự có một xóa mềm mà chỉ có thể đánh dấu một cột là không sử dụng mà không xóa nó về mặt vật lý. Nó có tác dụng tương tự kể từ khi bạn không còn có thể tham khảo nó và có một lệnh dọc theo các dòng alter table ... drop unused columns mà có nghĩa là để được chạy trong thời gian yên tĩnh, mà làm công việc khó khăn của thực sự loại bỏ nó về thể chất.

Điều này có lợi thế là "biến mất" các cột ngay lập tức mà không cần kéo hiệu suất cơ sở dữ liệu xuống trong thời gian bận.

11

ALTER TABLE XXX DROP COLUMN YYY;

3

Đối với các bảng lớn, điều này có thể là rất chậm. Nó thường có thể nhanh hơn rất nhiều để tạo một bảng mới, một bản sao cũ nhưng với các thay đổi và chèn dữ liệu. Thả bảng cũ và sau đó đổi tên bảng mới.

2

Điều này cũng có thể được thực hiện thông qua giao diện đồ họa SSMS.

Tôi thích phương pháp này vì nó cảnh báo bạn nếu có bất kỳ mối quan hệ nào trên cột đó và cũng có thể tự động xóa những mối quan hệ đó. Như PaxDiablo nói, nếu có các mối quan hệ, chúng phải được xóa trước tiên.

  1. bảng Đặt ở chế độ Design view (nhấp chuột phải vào bảng) như sau:

enter image description here

  1. Nhấp chuột phải vào cột theo quan điểm thiết kế của bảng và nhấn "Xóa Cột"

enter image description here

Tại thời điểm này, nếu có bất kỳ mối quan hệ nào cũng cần phải bị xóa, nó sẽ hỏi bạn có muốn xóa chúng không.

Các vấn đề liên quan