sql server 怎么為一個已經存在數據的table, 添加一個自增的主鍵列?


情況描述 如果你符合下面的情況, 可以參考本文的解決方案

  1. 你已經有了一個DB, 並且DB中也有了不少table, 但是table最開始的時候沒有設置主鍵. 數據存入了一部分后, 突然想到為這個table添加主鍵並且自增的column. 並且不想丟失這部分數據時,,,
  2. 你的db是自己建的, 但是table以及table中的數據是通過其他的db export->import過來的, 此時新的db中的import進來的table可能是沒有主鍵的, 即使import過來的列中包含id這種列,,,

網間對於這個問題存在兩種答案, 一種是可以, 一種是不可以. 我只說可以的. 剩下的就是不可以.

  • 首先必須刪除你這個table已經存在的主鍵約束, 因為這樣才能刪除這個表已存在的主鍵.
  • 然后新增一個主鍵, 這時需要將其設置成為自增的序列

[我的解釋]: 因為一般的主鍵是id, int,long, bigint這種 type, 所以當你的db中存在id為主鍵約束的table, 但是其自增屬性為false時, 你的table中如已存在數據是無法再修改這個自增屬性的. 如下圖:

configinfo表中有id為主鍵的主鍵約束, 我們看一下屬性:

將 is identity 修改為 yes, identity increment 修改為 1 (true)

點擊save 報錯:

報錯內容已經很明確. 接下來怎么解決, 就是刪除 id這個column, 重新add id column時, 就設置成自增的序列.

ALTER TABLE FilePublishInfoes DROP COLUMN Id

ALTER TABLE FilePublishInfoes ADD Id BIGINT IDENTITY CONSTRAINT PK_FilePublishInfoes PRIMARY KEY CLUSTERED


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM