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

2021-03-29 00:25:00 字數 6202 閱讀 3553

1樓:翱源來是你

大家用的mysql都是這樣吧

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

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

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

2樓:匿名使用者

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

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

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

alter table `huoli`

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

3樓:匿名使用者

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

4樓:神話v藍冰雨

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

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

5樓:匿名使用者

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

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

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

6樓:匿名使用者

自動實現比較困難。

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

用儲存過程來實現。

7樓:匿名使用者

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;

8樓:匿名使用者

改sequence的初始值,不過來

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

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

9樓:穹拓

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

10樓:匿名使用者

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

11樓:匿名使用者

跳號對你的資料也沒bai

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

去除表中自增欄位容

的最大值加一咯;

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

12樓:2011屆畢業生

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

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

13樓:匿名使用者

斷號問題看看相關貼子吧

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

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

14樓:匿名使用者

更新自增的主鍵值 mysql

alter table tablename auto_increment = auto_increment - 1;

將表的 自增 id 值減 1 即可

15樓:匿名使用者

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

16樓:下揚州啊

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

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

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

17樓:匿名使用者

刪除自增欄位後重新建

mysql資料庫中使用delete語句時,一般刪除一條記錄後id會不連續,才能讓序號繼續按順序排列?

18樓:匿名使用者

方法一:

truncate table 你的表名 【這樣不但將資料全部刪除,而且重新定位自增的欄位】

truncate命令是會把自增的欄位還原為從1開始的,或者你試試把table_a清空,

然後取消自增,儲存,再加回自增,這也是自增段還原為1 的方法。

方法二:

deletefrom 你的表名

dbcc checkident(你的表名,reseed,0)【重新定位自增的欄位,讓它從1開始】

19樓:匿名使用者

這個如果你想做的話那只有人為的去更新了。

id是唯一的標識,只要標識的唯一即可。不必要在意是否連續!

20樓:匿名使用者

如果的id欄位是主鍵的話,那就不能輕易改變啊

21樓:匿名使用者

答案肯定是沒有必要這麼做啦!你建立自增id 的原因不就是為了起到唯一索引的目的嗎,既然這樣 那你就沒必要再去人為處理 id,如果去處理,反而會非常影響效能,何苦呢。

22樓:落了的黃葉

沒必要這樣做啦,下次你再插入資料後,id會自動遞增

mysql 自增id,其中一些被刪除後,再新增內容這個自增id還是繼續下去

23樓:還詒爻

因為自增一般都是抄

序列的,序列有開bai始值,步長,結束值,下一du個值,現在值。而zhi且絕對dao

不能出現重複。

我們假設一個序列,按順序插入1-100,100條記錄,然後地51條和第84條有問題,刪除了。

如果再次插入, 應該是從101開始,不然不管是從51開始,還是從84開始?不管從哪個開始,根據步長都會出現重複,所以序列為了管理方便,都會直接記錄已經用過的最大數值,然後從下一個步長開始。

刪除的記錄,序列不會管,只會增加不會減少。不然會增大很多的管理難度。

我曾經見過,在序列建立之前匯入表的,然後建立的序列,後來他們發現這個表不能插入資料了,因為這個數字在表中存在了,那麼就會報錯。而導致沒辦法插入資料。

24樓:柴達納絲微

是正確的。刪除了就不會連續,sql不保證自增欄位必須連續的,如果需要必須連續,不能使用自增欄位,要手動計算id

mysql資料庫刪除一條資料後還想讓新增資料從空缺id處開始。

25樓:山水阿銳

方法1:

truncate table 你的表名

//這樣不但將資料全部刪除,而且重新定位自增的欄位方法2:

delete from 你的表名

dbcc checkident(你的表名,reseed,0)//重新定位自增的欄位,讓它從1開始

方法3:

如果你要儲存你的資料,介紹你第三種方法,by qinyi用phpmyadmin匯出資料庫,你在裡面會有發現哦編輯sql檔案,將其中的自增下一個id號改好,再匯入。

-------------------------truncate命令是會把自增的欄位還原為從1開始的,或者你試試把table_a清空,然後取消自增,儲存,再加回自增,這也是自增段還原為1 的方法。

-----------

mysql資料庫唯一編號欄位(自動編號欄位)在資料庫應用,我們經常要用到唯一編號,以標識記錄。在mysql中可通過資料列的auto_increment屬性

來自動生成。mysql支援多種資料表,每種資料表的自增屬性都有差異,這裡將介紹各種資料表裡的資料列自增屬性。

26樓:匿名使用者

mysql清空表資料後讓自增id仍從空位開始的方法:

1、清空表時使用truncate命令,而不用delete命令mysql> truncate test;

使用truncate命令的好處:

1)、速度快

2)、可以對自增id進行重排,使自增id仍從1開始計算2、清空表資料後,使用alter修改表,mysql>alter table table_name auto_increment=1;

新增以上指令即可。

我想讓資料庫的id在刪除中間一條後,後邊的id可以自動連續下來,怎麼實現?

27樓:匿名使用者

id 這欄位是表中的bai 主鍵吧?

那麼 可能和其

du他表 有關聯 如果改zhi

動了 就要出大dao問題版了

當然了 要是

單表的話你權可以整

delid = 26

delete from tablename where id = delid

update tablename set id = id-1 where id > delid

更新自增的主鍵值 在 mysql 行的通 其他的 資料庫 沒試過

alter table tablename auto_increment = auto_increment - 1;

將表的 自增 id 值減 1 即可

28樓:匿名使用者

用copyupdate語句把id大於26的id全部-1如bai update 表 set id=id-1 where id>26

有一個前提條件du id不能為標識列 如果是標zhi識列 先取消自動標識 然後dao

執行update 語句 執行完畢再把id設定成自動標誌

29樓:匿名使用者

自增id修改起來比較麻煩,你開啟表單想直接修改也是不行的,所以直接update的做法是不管回用的,比較簡答單的方法如下:

alter table 表名 drop column 自增列名alter table 表名 add 自增列名 int identity(1,1)

思想就是先刪除自增列,再新增一列自增列

30樓:匿名使用者

1,可以用trigger解決。 每deleted一條資料,就update他後面的資料id。

2,。。。。

3.。。。。

31樓:懷蔚譙華池

alter

table

表名drop

column

自增列名

alter

table

表名add

自增列名

intidentity(1,1)

思想就是先刪除自增列,再新增一列自增列

mysql 自增id 為什麼我刪除一條記錄後在插入新的記錄id不是按順序了

32樓:匿名使用者

auto_increment是insert的操作計數的,也可以檢視或修改,

檢視:show create table 表名

修改:alter table 表名 auto_increment=數值

33樓:匿名使用者

自增是計算你一共新增過多少條記錄,並不會受刪除的影響。

34樓:

應該設定 auto_increment自增列了

如何在Access資料庫中刪除自增的ID列,如何設定主鍵

開啟表 建立一個bai表 du此時表應該處在設計檢視上 建立一zhi個欄位名稱比 dao如 id 在id的前邊版會出現一個黑色的箭權頭 然後在上邊右鍵 會出來主鍵單擊即可完成 你最好建立一個access資料庫 按照我說的開啟做一下就知道了 資料庫如何設定主鍵 id 自動增長啊 sql語句 在建立表的...

如何刪除資料庫中的一行,如何刪除資料庫中某一列的值

刪除資料庫中的一行分為以下幾個步驟 1 通過資料庫訪問客戶端 例如訪問oracle,使用plsql 使用有刪除許可權的使用者登入資料庫 2 執行刪除指令碼 delete from tablename where id 11 這裡假設刪除的表名為tablename,標識要刪除行的欄位為id,值為11 ...

在Mysql資料庫中如何實現表的多對一關聯?請說具體一點

現在的資料庫基本都是關聯式資料庫,表與表之間的關聯一般都是靠欄位來維持的。版例如3個表,分別是權 使用者資訊表,購物訂單表,帳戶金額明細表 表結構如下 我寫簡單哈 使用者資訊表欄位 userid,username,password 購物訂單表欄位 orderid,userid,goods,price...