当前位置: 代码迷 >> Sql Server >> 主键和标识列的有关问题需要高手帮确认一下
  详细解决方案

主键和标识列的有关问题需要高手帮确认一下

热度:116   发布时间:2016-04-27 19:32:39.0
主键和标识列的问题需要高手帮确认一下。
我的某个数据表中,定义了一个主键索引   Field1,他不是自增列,在该表的其他字段上可能有定义全文索引。如果此时我在增加一个字段Field2,把它(Field2)定义为自增列,那么,自整列的增长顺序是否和主键列的顺序一至(及   Field2   的顺序和   Field1   的顺序   一样都是递增或递减)?


题外话:在编辑这个问题时,上一个页面   也就是   csdn   的导航页   隔几秒就   弹至顶端(StayOnTop   AllWith),我就不得不用鼠标再次点击输入框来获取焦点输入。而且,在输入时,页面总是不停的闪动。   郁闷\憋火.

------解决方案--------------------
测试了一下,好像是一样的,晕
/*------------------------
create table tb(test varchar(10) primary key, nId int identity(1,1))

insert tb select 'a'
union all select 'b'
union all select 'c'
union all select 'f'
union all select 'e'
union all select 'd'


select * from tb

go
alter table tb drop column nId
alter table tb add nId int identity(1,1)

select * from tb

alter table tb drop column nId
update tb set test='1111' where test='c'
alter table tb add nId int identity(1,1)

select * from tb

drop table tb
------------------------*/

(6 row(s) affected)
test nId
---------- -----------
a 1
b 2
c 3
d 6
e 5
f 4

(6 row(s) affected)

test nId
---------- -----------
a 1
b 2
c 3
d 4
e 5
f 6

(6 row(s) affected)

(1 row(s) affected)

test nId
---------- -----------
1111 1
a 2
b 3
d 4
e 5
f 6

(6 row(s) affected)
------解决方案--------------------
我的某个数据表中,定义了一个主键索引 Field1,他不是自增列,在该表的其他字段上可能有定义全文索引。如果此时我在增加一个字段Field2,把它(Field2)定义为自增列,那么,自整列的增长顺序是否和主键列的顺序一至(及 Field2 的顺序和 Field1 的顺序 一样都是递增或递减)? 

不一定.

既然有自增列,可把这列做为主键,因为他已经是唯一的了.不需要其他列来做主键.除非你有特别的需求.
------解决方案--------------------
自整列的增长顺序是否和主键列的顺序一至(及 Field2 的顺序和 Field1 的顺序 一样都是递增或递减)?
----------- 
不一致,如例
为什么有主键列,还有递增列呢,而主键列还不是递增的
------解决方案--------------------
排序的内容类型和规则不一样很可能不一致
  相关解决方案