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

Làm cách nào để thêm danh tính vào cột trong SQL Server?

Bạn không thể thêm IDENTITY vào một cột hiện có. Nó chỉ là không thể được thực hiện.

Bạn sẽ cần tạo mới cột loại INT IDENTITY và sau đó thả cột cũ bạn không cần nữa (và có thể đổi tên cột mới thành tên cũ - nếu cần)

Ngoài ra:Tôi sẽ không thực hiện điều này trong trình thiết kế trực quan - điều này sẽ cố gắng tạo lại bảng với cấu trúc mới, sao chép tất cả dữ liệu (tất cả 10 triệu hàng), và sau đó bỏ bảng cũ.

Sẽ hiệu quả hơn nhiều khi sử dụng các câu lệnh T-SQL thẳng - điều này sẽ thực hiện cập nhật "tại chỗ", không phá hủy (không có dữ liệu nào bị mất) và nó không cần sao chép khoảng 10 triệu hàng trong quá trình này ...

ALTER TABLE dbo.YourTable
  ADD NewID INT IDENTITY(1,1) NOT NULL

Khi bạn thêm một cột mới thuộc loại INT IDENTITY vào bảng của bạn, sau đó nó sẽ được tự động điền với các số liên tiếp. Bạn không thể ngăn điều này xảy ra và bạn cũng không thể cập nhật các giá trị sau này.

Cả hai tùy chọn đó đều không thực sự hữu ích, cuối cùng - bạn có thể kết thúc với các giá trị ID khác nhau .... để làm đúng, bạn phải:

  • tạo bảng mới trước thời hạn, với cấu trúc thích hợp và IDENTITY đã có sẵn
  • sau đó bật SET IDENTITY_INSERT (yourtable) ON trên bảng đó để cho phép các giá trị được chèn vào cột nhận dạng
  • sao chép dữ liệu này từ nguồn ban đầu
  • tắt tính năng chèn lại danh tính:SET IDENTITY_INSERT (yourtable) OFF

Chỉ với phương pháp này, bạn mới có thể lấy cùng một ID trong cột IDENTITY trong bảng mới của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nối hai bảng không liên quan trong sql

  2. Làm cách nào để kết hợp dữ liệu OPENXML vào Truy vấn tham gia bên trong của tôi?

  3. Truy vấn SQL cho mối quan hệ cha mẹ

  4. Cách liệt kê các tính năng không được dùng nữa trong phiên bản máy chủ SQL bằng T-SQL

  5. Tạo thông báo lỗi tùy chỉnh trong kiểm tra ràng buộc trong SQL SERVER 2008