日期:2014-05-18  浏览次数:20695 次

两个相邻的记录之间插入一个新记录,怎么做?
我数据库的ID是自动ID如:
表A
ID   字段1     字段2
1       DD           AAA
2       BB           BBB

怎么把ID   为1   和   2   中间插入一个新记录,新记录的ID   为2     把2   自动调成3呢?


------解决方案--------------------
identity列是不允许UPDATE操作的
------解决方案--------------------
用代码交换行位置就好了
------解决方案--------------------
看我编写的存储过程是否和您意思~~~前提是要先把ID字段改回INT数据类型
create proc spinsertany
@n int --定义一个参数,表示在@n行后面添加记录
as
declare @count int
select @count=(select count(ID) from 表1)+1 --统计插入新行后的总行数
if exists(select * from 表1 where ID=@n) --判断插入的记录数字是否超出范围
begin
declare @col1 varchar(100), @col2 varchar(100) --定义两个做交换容器的变量
insert into 表1 values(@count, 'nnn ', 'nnn ') --插入行
while @n <=@count-2 --2 --循环次数
begin
select @col1=字段1 from 表1 where ID=@n+1 --取得要插入行的字段1的数据
select @col2=字段2 from 表1 where ID=@n+1
update 表1 set 字段1=(select 字段1 from 表1 where ID=@count) where ID=@n+1 --与最后一条记录交换
update 表1 set 字段2=(select 字段2 from 表1 where ID=@count) where ID=@n+1
update 表1 set 字段1=@col1 where ID=@count --把刚才取得的行数据替换给最后行
update 表1 set 字段2=@col2 where ID=@count
select @n=@n+1 --循环增量,循环在需插入行以后行都与最后行做交换操作~
end
end
else
print '请输入正确的参数或者参数超出范围 '
go

我这里写了一个存储过程~~ 希望对您有用~~~~~~~~以后大家多交流交流~
谢谢先~~~~