情況描述 如果你符合下面的情況, 可以參考本文的解決方案
- 你已經有了一個DB, 並且DB中也有了不少table, 但是table最開始的時候沒有設置主鍵. 數據存入了一部分后, 突然想到為這個table添加主鍵並且自增的column. 並且不想丟失這部分數據時,,,
- 你的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