SQL自增欄位,有資料刪除後,如何實現自增欄位的連續

2021-03-12 01:02:49 字數 2579 閱讀 4013

1樓:匿名使用者

對於自增欄位確實有這個問題,也無法改變,這是由於自增欄位的值是內部計算,專每使用一次都會自屬動+1,有點類似線序,你可以使用如下兩種方法解決:

1、自增欄位改為不用手工增加,每次都取最大值+1來儲存

2、不改自增欄位型別,採用邏輯刪除的方法,比如在表中增加一個欄位isdel(1表示已刪除,0或者其它值表示沒有刪除),記錄當前記錄是否屬於刪除狀態,

2樓:匿名使用者

自動實現比較困難。

你就不能自增長的值為序號。

用儲存過程來實現。

3樓:匿名使用者

1.先取消主鍵的自增長,alter table 表名change id id int primary key ;

2.調整資料id順序 update 表名 set id = id - 1 where id > 10;

3.建議刪除一遍後面的空數版據,delete from 表名 where id > 1000;

4.把主鍵自增權長設定回來,alter table 表名 change id id int primary key auto_increment;

4樓:匿名使用者

改sequence的初始值,不過來

這個風源險太大,不建bai議這樣操作。如果你調整序du號之前zhi的那一刻有人往表裡dao插入了一條資料,然後你把序號往前挪了,自增之後插入的id遇到了已存在的序號就要報錯了。另外你這樣做也沒啥意義啊,假如1,2,3。

你把2刪了,依然是不連貫的,何必糾結最後一條記錄產生的不連貫

5樓:穹拓

自增欄位的值自己是不能設定的,所以在原先的表裡面是改是行不通的。您可以把這個表給複製一下,只複製表結構就行,然後把表裡面的資料給複製到新表裡面,直到您誤刪的哪條記錄

6樓:匿名使用者

序號3已經生生了,雖然刪除了,但刪除的只是表記錄,資料庫已經記錄了id,所以再次插入記錄會從4開始。可以不用資料庫自帶的自增序列,改用自己建立序列。

7樓:匿名使用者

跳號對你的資料也沒bai

影響;如果你du感覺很不爽的話你可以自zhi己dao做自增效果,每次內

去除表中自增欄位容

的最大值加一咯;

sql server自帶的自增效果就是這樣,使用過的序號將不再使用。除非你每次刪除最後一條記錄重置一下重新開始自增;

8樓:2011屆畢業生

mysql 資料庫就是這樣的,刪除資料就會斷掉排列順序。要想重新從1開始排序,就要先刪除自增列,在新增自增列(網頁連結)。

其實排列順序不連續不影響我們運算元據的,無非就是看起來不自在而已。

9樓:匿名使用者

斷號問題看看相關貼子吧

不能重排,重排會引起很多問題,只能在後面新增的時候補上

自己寫一個版插入操作的儲存過程權,先判斷有無斷號,有斷號插入斷號,沒有就直接插入

10樓:匿名使用者

更新自增的主鍵值 mysql

alter table tablename auto_increment = auto_increment - 1;

將表的 自增 id 值減 1 即可

11樓:匿名使用者

老鐵,有知道怎麼弄了嗎?我也遇到這個問題了

12樓:下揚州啊

這個自增基本上是沒有具體的意義的,不要追求這個不間斷的視覺效果

凡是自增的,肯定避免不了不連續,這個無關緊要

客戶端可以用行號來作為替代顯示

13樓:匿名使用者

刪除自增欄位後重新建

mysql資料庫自增l列刪除一條記錄後再新增記錄自增列就不連續了

14樓:翱源來是你

大家用的mysql都是這樣吧

如果你要連續的話 也可以實現啊

每次插入之前要判斷max(5.x的版本都有這個函式吧?!)然後再max+1

不過要是刪除的話 就比較麻煩了 好比刪除3 你得把後面的都修改了 建議不要這麼做

15樓:匿名使用者

自動id列,如果刪除了記錄,再插入記錄時,預設不會重用已經刪除的id,因此是不連續的。

但如果確實需要連續的id,則刪除後必須手工修改關於自動增長的值。

如,假如你這個表名為huoli,自動增長列為id,那麼刪除id=4的記錄後,如果想重用id=4,那麼執行如下語句:

alter table `huoli`

modify column `id` int(11) not null auto_increment auto_increment=4;

16樓:匿名使用者

這是正常現在 一般 刪除都會出現這種情況 自增id一般是不會變化的

17樓:神話v藍冰雨

mssql也是這樣的,很正常啊,有啥可奇怪的

mysql刪除兩天前的所有資料SQL語句怎麼寫

delete from 表 where datediff curdate 日期欄位 2請在測試系統上測試後,再放入生產環境執行,如有疑問,及時溝通 mysql中刪除表中所有資料的sql語句怎麼寫 使用truncate語句就可以刪除表中所有資料。truncate 語句的簡單說明 一般情況下,刪除資料大...

sql資料庫delete刪除後怎麼恢復

恢復delete某些記錄的前題為 sql server的故障還原模型為完全 注意 企業管理器 右鍵點選資料庫 屬性 選項 故障還原模型 不行就用log explorer還原!有備份的話,恢復備份也行啊 sql資料庫delete刪除後怎麼恢復 恢復delete某些記錄的前題為 sqlserver的故障...

sql資料庫如何追加欄位內容,在資料表中新增一個欄位的SQL語句怎麼寫

sql server專門提供了處理text,ntext,image欄位的函式,是 textptr textvalid readtext updatetext writetext 解決方法 declare ptrval binary 16 select ptrval textptr content f...