當前位置:首頁 » 編程語言 » sql設置自增刪除中間列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql設置自增刪除中間列

發布時間: 2022-04-23 05:46:11

Ⅰ 在sql里設置了自增長列,但現在要在刪除數據後這個自增長列還是按順序增長

自增長列 不保證按順序增長 ,所以不可能利用自增長列實現順序增長
如果希望.順序增長需要人為控制,或代碼控制

Ⅱ SQL Server 設置自動增長列id,當刪除id中行時後面數的往前移

這個只能通過觸發器來實現了。。
如果你要這么做 當初就不應該用自增列 呵呵
我給你個例子 用其他方式實現自增列的這種情況

這里介紹個用觸發器生成自增列的方法
--環境
create table test_5
(
id int primary key not null,
value int
)
--保存最大序列值的表
create table Sequence
(
rn int
)
insert Sequence select 0
go
create trigger tr_test_5 on test_5
Instead of insert
as
begin
declare @n int
update Sequence
set rn=rn+@@rowcount,@n=rn
insert test_5
select @n+row_number()over(order by getdate()),value from inserted
end
go
insert test_5(value)
select 1 union select 2 union select 3
select * from test_5
/*
id value
----------- -----------
1 1
2 2
3 3*/

Ⅲ sql中自增列 id,刪除其中一個 ,如何查找被刪除的行

CREATETABLE#test(
idintidentity(1,1),
valint
);

INSERTINTO#testVALUES(101);
INSERTINTO#testVALUES(102);
INSERTINTO#testVALUES(103);
INSERTINTO#testVALUES(104);
INSERTINTO#testVALUES(105);
INSERTINTO#testVALUES(106);
INSERTINTO#testVALUES(107);
GO

SELECT*FROM#test
GO

idval
----------------------
1101
2102
3103
4104
5105
6106
7107

(7行受影響)


DELETEFROM#testWHEREid=2;
DELETEFROM#testWHEREid=5;
DELETEFROM#testWHEREid=6;
GO


SELECT
M.number
FROM
#testtRIGHTJOINmaster..spt_valuesM
ON(M.number=t.id)
WHERE
M.type='P'
ANDM.number>0
ANDM.number<=(SELECTMAX(id)FROM#test)
ANDt.idisnull
GO

number
-----------
2
5
6

(3行受影響)

Ⅳ sql 修改某列 為自增欄位

自增列不能直接修改,必須將原有id列刪除,然後重新添加一列具有identity屬性的id欄位。比如你要修改的欄位名為id:

alter
table
表名
drop
column
id

alter
table
表名
add
id
int
identity(1,1)

Ⅳ SQL自增欄位,有數據刪除後,如何實現自增欄位的連續

對於自增欄位確實有這個問題,也無法改變,這是由於自增欄位的值是內部計算,每使用一次都會自動+1,有點類似線序,你可以使用如下兩種方法解決:
1、自增欄位改為不用手工增加,每次都取最大值+1來存儲
2、不改自增欄位類型,採用邏輯刪除的方法,比如在表中增加一個欄位isdel(1表示已刪除,0或者其它值表示沒有刪除),記錄當前記錄是否屬於刪除狀態,

Ⅵ sql的自增列如何重置

--操作的過程中,注意一點,標識列自增是不能修改的,那麼首先
--去除該列自增的標識,然後再修改id,成功修改後,再加上標識
--r如果不修改標識,會報錯:「無法更新標識列」

create table #a
(ids int,
names varchar(100)
)

--插入測試數據,序號從100開始的,表示你當前表的情況
declare @a int
set @a=100
while @a<200
begin
insert #a(ids)
select @a
set @a=@a+1
end

--假定還有一個#b表也引用了該序號
--插入測試數據到#b
select ids n_id,names ff into #b from #a

--好,現在開始處理序號問題了,用臨時表#tmp過渡
--這里用了一個標識列,請注意!
--將帶一個新的序列的數據插入到表#tmp中
select identity(int,1,1) flag, * into #tmp from #a

--看看結果是不是有了新的序列了,呵
select * from #tmp

--那麼現在就利用#tmp表來更新所有用到該序列的表

--更新#a
update #a set ids=flag from #a a,#tmp b where a.ids=b.ids

--更新其他表引用了該序列的,比如#b
update #b set n_id=flag from #b a,#tmp b where a.n_id=b.ids

Ⅶ SQL中刪除中間一條數據,讓後面數據的主鍵補上要怎麼做

1. 用自增主鍵。2. 如果你的這個主鍵和其他的表欄位有關聯關系,則無法實現。如果沒有關聯,則從小到大一條一條全部更新吧。

Ⅷ sql 自增列刪除

當你插入的時候,自增列的數據可以用SQL語句獲得,比如你插入的時候自增列插入的數為:
declare @add int
select @add=count(*)+1 from 表名
insert into 表名(自增列) values(@add)
這樣就可以了!

Ⅸ sql 裡面 我有三個列 其中ID是自增 但是當我刪除其中一條數據時

把數據導出到別的表備份(可以用select * into 備份表名 from 表名),然後
truncate table 表名
再把數據塞回來(注意ID不要寫在insert 語句里)
insert into 表名(欄位1,欄位2 ) select 欄位1,欄位2 from 備份表名
再drop刪除掉備份表即可

Ⅹ sql server 資料庫問題,表中一個欄位編號設置自動編號欄位,如何才能實現刪除其中一條記錄

刪除了以後,該編號就斷了!!!!

建議你嘗試這個思路,類似於FoxBase的做法:
增加一個刪除否的欄位,當進行刪除操作的時候,不是真正的刪除,而是在這個欄位里做上一個標記,做過刪除標記的記錄,查詢時都隱藏掉。
然後,當新增加記錄時,使用刪除記錄中最小的自動編號的記錄,進行相應欄位的修編輯修改,然後恢復它的刪除標記為未刪除。
僅供參考。