想SQL2000能够使用ACCESS自动编号那样的主键,如何实现,谢谢
identity有个缺点,比如id为1,2,3,4时,我删除了2,则不是1,3,4 而是1,2,3
此问题如何解决,求达人指点~
identity有个缺点,比如id为1,2,3,4时,我删除了2,则不是1,3,4 而是1,2,3
此问题如何解决,求达人指点~
解决方案 »
- 存储过程中字符串如何连接??
- 大家都是如何使用帮助的,比如说有了个想法,如何更快找到需要的类、函数、存储过程等?在帮助系统中大海捞针吗?还是...
- 如何把一台SQL 2000的机器升级到2005
- 替换字段中最后一个字符“,”为空
- 客户端sql连不上服务器端,但能通过网络邻居访问,怎么回事?
- SQL update case
- 菜鸟提问:如何用脚本实现不同数据库之间的数据库实例复制。
- 查找连续数据表中的缺少的连续记录
- 如何查找出几个不同表中相同字段名(类型也相同)的所有数据?例如......
- 一个求所有员工最新工资的问题…………
- SQL求助^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- 求一个约束的写法
又想实现连续的话
那么就要用的触发器实现了,
不过不建议用这样的方法,因为实在是消耗太多的资源了,不划算!
identity只能处理整型,如果我的主键是字符型的呢??如何以较少的资源消耗来实现
多谢~
哦,我理解错了,identity实现的是不连续的吧
identity只能处理整型,如果我的主键是字符型的呢??如何以较少的资源消耗来实现
多谢~
-------
identity本身是连续的:
identity(int,1,1) 初始值为1,每增加一行它的值就自加1
-----------------------------------------------------
只不过是你做了删除的操作才导致它不连续
如果你的主键是字符型的话,想它连续的话,
更加难~~~等高人给你更好的解释吧^_^
主要是字符型怎么使用identity,要转换两次类型吗?有没有更简单一点的操作啊????
create table T
(
id int identity(1,1),
CharID as (right('000000' + cast(id as varchar(100)),6)), --公式字段
name varchar(100)
)
insert into T (name) select 'a'
insert into T (name) select 'b'
insert into T (name) select 'c'
select * from Tdrop table T
Declare @Char Varchar(8)
Set @Int=1
Set @Char=Right('00000000'+Cast(@Int As Varchar),8)
Print @Char
/*
00000001
*/
的例子很好的体现了
Identity(int,1,1) 与字符型的转换了...