Tôi đang cố gắng thay đổi bảng trong máy chủ SQL bằng tập lệnh. Trong quá khứ tôi đã luôn thực hiện loại điều này thông qua một GUI, nhưng bây giờ tôi cần phải tạo ra một kịch bản để làm điều đó cho khách hàng.Chèn cột giữa các cột khác trong SQL Server bằng cách sử dụng tập lệnh
Tôi có một bảng cơ sở dữ liệu SQL Server đó là như thế này:
MyTable ------- ColA int NOT NULL ColB int NOT NULL ColC int NOT NULL ColD VARCHAR(100)
Mấu chốt chính được xác định trên Cola, ColB, và ColC.
Tôi muốn các kịch bản SQL để thay đổi bảng những thứ tương tự như vậy:
MyTable ------- ColA int NOT NULL ColB int NOT NULL ColX int NOT NULL (new column, default 0 for existing data) ColC int NOT NULL ColD VARCHAR(100)
Mấu chốt chính hiện nay sẽ được xác định bởi Cola, ColB, ColX, và ColC.
Điều này rất dễ thực hiện thông qua GUI của máy chủ SQL. Nhưng khi tôi có nó tạo ra một kịch bản từ đó, nó có vẻ phức tạp không cần thiết. Về cơ bản, kịch bản tạo một bảng tạm thời với lược đồ mới, sao chép tất cả dữ liệu, chỉ mục và các ràng buộc từ bảng cũ vào bảng tạm thời, xóa bảng cũ, sau đó đổi tên bảng mới thành tên cũ. Ngoài ra, nó có các dòng như sau:
ALTER TABLE dbo.Tmp_MyTable ADD CONSTRAINT
MyTable21792984_ColC_DF DEFAULT ((0)) FOR ColC
Tôi lo ngại rằng những con số ngẫu nhiên này ở đó (tức là 21792984) sẽ không giống nhau trên tất cả các phiên bản cơ sở dữ liệu khách hàng. Chúng trông giống như một cái gì đó mà máy chủ SQL tạo ra khi tạo cơ sở dữ liệu duy nhất cho mỗi cá thể.
Có cách nào thay đổi thẳng hơn bảng thông qua các lệnh SQL không? Tôi đã xem trực tuyến nhưng những gì tôi đã tìm thấy chủ yếu là cơ bản và/hoặc chung chung.
Cập nhật: Từ các câu trả lời tôi nhận được, có vẻ như khó khăn nằm trong việc đặt cột mới "ở giữa" hai cột. Tôi đã nhận ra nó không thực sự quan trọng đối với thứ tự các cột trong (nếu tôi cảm thấy tự do để lại câu trả lời đúng). Trong trường hợp của tôi, sự thay đổi đơn giản hơn rất nhiều nếu tôi chỉ thêm cột vào cuối bảng và không có gì trong mã dựa trên thứ tự cột cụ thể.
Cảm ơn, khi kiểm tra thêm, thứ tự cột không quan trọng (ngoại trừ thẩm mỹ). Chỉ thêm cột vào cuối làm cho nó trở thành một nhiệm vụ dễ dàng hơn nhiều. – Kip
Nếu bạn thực sự muốn thay đổi thứ tự, bạn có thể sử dụng Thứ tự cột lực trong SQL So sánh để thực hiện việc này. Điều này đòi hỏi phải xây dựng lại bảng đầy đủ, vì vậy có thể mất thời gian nếu bạn có nhiều dữ liệu. Dữ liệu hiện có sẽ được bảo toàn bằng So sánh SQL. –