當前位置:首頁 » 數據倉庫 » 資料庫自增id不連續
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫自增id不連續

發布時間: 2023-05-29 22:15:34

『壹』 從sqlserver05資料庫中查出20至30條數據,其中ID是主鍵自增列,但並不連續,

select top 30 * from table where [id] not in (select top 20 [id] from table)

『貳』 MySQl數據表中的ID設置為自增,為什麼中間會出現ID編號不連續的情況

缺失的那些id的行都是被刪除的行,新增加的行不會填補這些空缺!

『叄』 我想讓資料庫的自增ID在刪除中間一條後,後邊的ID可以自動連續下來。

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

思想就是先手鍵前刪除自亮游增列,再添加一畢清列自增列

『肆』 sql 假如一個表有ID,Name兩個欄位,id為自增,但不連續,要查詢第10到20行里Name值不重復數據

既然用了資料庫,就要轉變思路,學會資料庫的邏輯。
雖然在物理存儲的概念上來說是一行一行的,但邏輯上資料庫中是沒有行的概念的,所以說這個問從設計之初就有問題。
如果資料庫結構已經確定了的話,用一句sql實現不了,可以用存儲過程來實現,先按id排序,取出20行,再反過來取後面10個就可以了。

『伍』 資料庫中有一個欄位存取記錄的id,從資料庫中刪除一條記錄後,id變為不連續,如何解決,VC++環境中

看看或許有用:
/*-------------------------

*問題描述:表中採用了自增列刪除記錄會出現斷號的情況,但是又想讓殲茄它刪除後自動重新編號?

*方法1:採用函數+觸發器的方法替代IDENTITY的功能,並且解決斷號問題

*方法2:採用存儲過程(還是使用IDENTITY列)

------------------------------------*/

--創建實現自增列的函數

create function f_getID()

returns int

as

begin

return(select isnull(max(id),0)+1 from tb)

end

go

--創建表

create table tb(id int primary key default dbo.f_getID() ,name varchar(20))

go

--創建觸發器,在刪除表中的記錄時,自動更新記錄的id,解決斷號的煩惱

create trigger t_s_anhao on tb

AFTER delete

as

declare @mid int

select @mid=min(id)-1

from deleted

update tb

set id=@mid,@mid=@mid+1

where id>@mid+1

go

--插入記錄測試(只能一條做改渣條記錄插入)

insert into tb(name) values('1哥')

insert into tb(name) values('2哥')

insert into tb(name) values('3哥')

insert into tb(name) values('4哥')

insert into tb(name) values('5哥')

insert into tb(name) values('6哥')

insert into tb(name) values('7哥')

insert into tb(name) values('8哥')

--顯示插入的結果

select * from tb

--刪除部分記純悄錄

delete from tb where name in('1哥','4哥','7哥','8哥')

--顯示刪除後的結果

select * from tb

/*--測試結果

id name

----------- --------------------

1 2哥

2 3哥

3 5哥

4 6哥

--*/

--刪除環境

drop table tb

drop function f_getID

『陸』 sql server 2012 自增列不連續怎麼辦

sql鏈接字條串
provider=sqloledb.1;persist
security
info=false;data
source=127.0.0.1,1433;user
id=username;pwd=passwd;initial
catalog=database,
username
資料庫用戶名,passwd
密碼,database
對應的資料庫,data
sourse是資料庫的ip地址及埠號,請確保以上都是正確的。

『柒』 mysql查詢自增id不連續 怎麼操作

只有幾萬條數據,那就好辦多了,列舉個笨方法如下

如果要一次性查出來,需要用遞歸了,因為不知道你中間的斷點會有多少個,所以建議把這個表復制一份,直接畝姿對表進行刪除操作

直接for循環

for($i ==1;$i<你的最大數據條數;$i++){

查詢你的記錄,是否有等於$i和$i+1的,如果這兩條記錄同時唯耐早存在就刪指雀除$i編號

}

『捌』 為什麼PostgreSQL的自增ID是非連續的

就像mysql 的uuid一樣,每次select nextval('user_seq')都會虧消自動遞增銷或知的。就像樓主所說,可能你的事務沒成功,但seq不會回滾,除非你rockback的時候設置一團襪下seq
INSERT INTO my_users(u_id,u_name)VALUES(nextval('user_seq'),'oschina');

『玖』 我要向一個表中插入數據,且這個表中的ID不是自動連續的,我插入的數據如何讓其ID自動增長;

自增列的類型應為int或bigint型。可以設置起始和每次遞增數。
如:create table [table1]
(
[id] [int] identity(1,1)...
)
這樣每次插入則不需要為主鍵設置參數,資料庫會根據設置的遞增條件,自動給出主鍵值。
如以上代碼所示,則第一次插入後主鍵為1,第二次為2,一次遞增。
需要注意的是:如果這個表中有10條數據,主鍵為1-10不間斷的數字,那現在要刪除第十條數據,
繼續攜行插輪悔入的話,id則會變成11,而不是10。通俗的說就是主鍵使用過一次臘隱正將不會再次使用。

『拾』 資料庫主鍵自增ID 刪除後 出現斷號 怎麼讓其重新順號

這個是不可以的,幾乎每一個資料庫引擎都是按照這樣一個模式進行序號的遞增的。