请教:sql server 中delete语句的执行细节
在sql 查询分析器中执行:
——————————————————————————
create table temp1
(
col int
)
insert into temp1(col) values(1)
insert into temp1(col) values(2)
insert into temp1(col) values(3)
insert into temp1(col) values(4)
insert into temp1(col) values(5)
insert into temp1(col) values(6)
insert into temp1(col) values(7)
insert into temp1(col) values(8)
insert into temp1(col) values(9)
select * from temp1
delete from temp1 where col=8 --删除一行
insert into temp1(col) values(1) --插入一行
select * from temp1 --新行插入到了原因8的位置
drop table temp1 --删除表
————————————————————————————
现象描述:
第一个 ‘select * from temp1’的结果是:
col
-----------
1
2
3
4
5
6
7
8
9
(所影响的行数为 9 行)
第二个‘select * from temp1’的结果是:
col
-----------
1
2
3
4
5
6
7
1
9
(所影响的行数为 9 行)
为什新行没有插入到最后一位呢?
请明白细节的帮忙解答一下。以前总以为插入到后面呢。
谢谢!
------解决方案--------------------我也想知道了
幫頂了...
------解决方案--------------------表是一页一页的...删除后,看来空间就留出来了.
不知表创建时能否设置成自动的...不是有压缩表的语句么..
------解决方案----------------------应该是你的col列自动加约束了,看一下改过后的代码
create table temp1
(
id int identity PRIMARY KEY,
col int
)
insert into temp1(col) values(1)
insert into temp1(col) values(2)
insert into temp1(col) values(3)
insert into temp1(col) values(4)
insert into temp1(col) values(5)
insert into temp1(col) values(6)
insert into temp1(col) values(7)
insert into temp1(col) values(8)
insert into temp1(col) values(9)
select * from temp1
delete from temp1 where col=8 --删除一行
insert into temp1(col) values(1) --插入一行
select * from temp1 --新行插入到了原因8的位置
drop table temp1 --删除表
------解决方案--------------------表是按主键排序的.