Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thay thế cột nhận dạng từ int thành bigint

Chà, sẽ không phải là một cách nhanh chóng, dễ dàng để làm điều này, thực sự ....

Cách tiếp cận của tôi sẽ là:

  1. tạo một bảng mới với cấu trúc giống hệt nhau - ngoại trừ ID cột là BIGINT IDENTITY thay vì INT IDENTITY

    ---- [đặt máy chủ của bạn vào chế độ một người dùng độc quyền tại đây; người dùng không thể sử dụng máy chủ của bạn kể từ thời điểm này] ----

  2. tìm và tắt tất cả các ràng buộc khóa ngoại tham chiếu đến bảng của bạn

  3. BẬT SET IDENTITY_INSERT (your new table) ON

  4. chèn các hàng từ bảng cũ của bạn vào bảng mới

  5. TẮT SET IDENTITY_INSERT (your new table) ON

  6. xóa bảng cũ của bạn

  7. đổi tên bảng mới của bạn thành tên bảng cũ

  8. cập nhật tất cả bảng có tham chiếu FK vào bảng của bạn để sử dụng BIGINT thay vì INT (điều đó có thể thực hiện được với ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. tạo lại tất cả các mối quan hệ khóa ngoài một lần nữa

  10. bây giờ bạn có thể đưa máy chủ của mình trở lại trạng thái sử dụng nhiều người dùng bình thường



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Deadlock là gì?

  2. Dự án cơ sở dữ liệu để thả cơ sở dữ liệu trước khi triển khai?

  3. Chèn hàng loạt SQL Server - Phần 1

  4. Các khóa chính có bị khóa không?

  5. Truy vấn ngày của SQL Server