当前位置:首页 » 编程语言 » 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的做法:
增加一个删除否的字段,当进行删除操作的时候,不是真正的删除,而是在这个字段里做上一个标记,做过删除标记的记录,查询时都隐藏掉。
然后,当新增加记录时,使用删除记录中最小的自动编号的记录,进行相应字段的修编辑修改,然后恢复它的删除标记为未删除。
仅供参考。