Thay đổi kích thước cột trong SQL Server


Câu trả lời:


506
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
Hãy cẩn thận, nếu bạn đang thay đổi một cột trong một dữ liệu rất lớn. Bạn có thể gây ra sự cố (dù sao trên môi trường của tôi).
DavidTheDev

55
Điều quan trọng nữa là nếu cột có thuộc tính NOT NULLthì nó phải được đề cập trong truy vấn khác, nó sẽ đặt nó NULLtheo mặc định. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri

8
Nếu bạn có một chỉ mục trên cột đó, bạn sẽ phải loại bỏ nó, sau đó thực thi mã bảng thay đổi và sau đó tạo lại chỉ mục
Sr.PEDRO



19

Chạy ALTER COLUMNmà không đề cập đến thuộc tính NOT NULLsẽ dẫn đến cột bị thay đổi thành nullable, nếu nó đã không. Do đó, trước tiên bạn cần kiểm tra xem cột có thể không và nếu không, chỉ định thuộc tính NOT NULL. Ngoài ra, bạn có thể sử dụng câu lệnh sau để kiểm tra tính vô hiệu của cột trước và chạy lệnh với thuộc tính đúng.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL

6

Chọn bảng -> Thiết kế -> thay đổi giá trị trong Kiểu dữ liệu được hiển thị trong Hình sau.

nhập mô tả hình ảnh ở đây

Lưu bảng thiết kế.


kiểm tra đúng có thể là bạn đang thiếu một số bước.
arnav

7
Công cụ -> Tùy chọn ... /> Nhà thiết kế -> Nhà thiết kế bảng và cơ sở dữ liệu - bỏ chọn "Ngăn chặn lưu thay đổi yêu cầu tạo lại bảng"
7anner

Đối với hầu hết mọi thứ, tôi thích kịch bản. Nhưng để thay đổi cột, tôi thích UI. Đừng nhớ kiểm tra KHÔNG NULL hoặc bất kỳ tính toán hoặc bất kỳ thuộc tính cột bổ sung nào. Chỉ cần nhấp vào Lưu (sau khi bạn thực hiện thay đổi cài đặt trong SSMS dưới dạng ghi chú @ 7anner).
Jacob H

1

Cách tiếp cận thú vị có thể được tìm thấy ở đây: Làm thế nào để phóng to các cột của bạn mà không bị ngừng hoạt động bởi spaghettidba

Nếu bạn cố gắng phóng to cột này bằng lệnh ALTER TABLE trực tiếp, bạn sẽ phải đợi SQLServer đi qua tất cả các hàng và viết kiểu dữ liệu mới

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Để khắc phục sự bất tiện này, có một viên thuốc phóng to cột ma thuật mà bảng của bạn có thể uống, và nó được gọi là Row nén. (...) Với Nén hàng, các cột có kích thước cố định của bạn chỉ có thể sử dụng không gian cần thiết cho loại dữ liệu nhỏ nhất có dữ liệu thực tế phù hợp.

Khi bảng được nén ở ROWmức, thì ALTER TABLE ALTER COLUMNsiêu dữ liệu chỉ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.