指定位置插入某一个记录,大家帮忙!
表A
id(自动id)name
1 a
2 b
3 c
现在 2 和3 之间插入一条记录(新3)旧3往下移动变成4
id(自动id)name
1 a
2 b
3 xx
4 c
怎么做?
------解决方案--------------------可以考慮換個思路
Insert A Select name From A Where ID = 3
Update A Set name = 'xx ' Where ID = 3
------解决方案-------------------- create table T(id int identity(1,1),name varchar(100))
go
insert into T
select 'a ' union all
select 'b ' union all
select 'c '
select * from T
select *
into T2
from T
where id> =3
delete T where id> =3
dbcc checkident (T,reseed,2)
insert into T select 'xxx '
set identity_insert T on
insert into T(id,name) select ID+1,name from T2
set identity_insert T off
select * from T
drop table T,T2
------解决方案--------------------@pos --你要插入的位置
update 表A set id = id + 1 where id > = @pos
insert 表A values (@pos, 'xxx ')
------解决方案-------------------- Create Table A
(id Int Identity(1, 1),
name Varchar(10))
Insert A Select 'a '
Union All Select 'b '
Union All Select 'c '
GO
Insert A Select name From A Where ID = 3
Update A Set name = 'xx ' Where ID = 3
Select * From A
GO
Drop Table A
--Result
/*
id name
1 a
2 b
3 xx
4 c
*/
------解决方案---------------------- 腾位置
UPDATE tb SET id = id + 1
WHERE id > = 3
-- 插入
INSERT tb (id, name)
VALUES(3, 'xx ')
------解决方案--------------------update 表A set id = id +1 where id > =2
insert into 表A(id,name) select 3, 'xx '
------解决方案--------------------那万一id是自增长的主键呢?
------解决方案--------------------楼上老大,ID是Identity类型的标识列,能update ?
------解决方案----------------------如果ID是自动增长,按如下处理:
create table T(id int identity(1,1),name varchar(100))
go
insert into T
select 'a ' union all
select 'b ' union all
select 'c '
select * from T
select *
into T2
from T
where id> =3
delete T where id> =3
dbcc checkident (T,reseed,2)
insert into T select 'xxx '