在原本的自动增长列上实现你的要求是不可能的,如果你非要这么做,我有个办法,就是把自动增长关掉,例子如下:
create table z (id int primary key(id))
go
create function f_id ()
returns int
as
begin
declare @id int,@i int,@count int,@maxid int
select @i=1
select @count=count() from z
select @maxid=max(id) from z
if @maxid is null
select @id=1
else
if @count=@maxid
select @id=@maxid+1
else
while @i<=@maxid
begin
if not exists (select from z where id=@i)
begin
select @id=@i
break
end
select @i=@i+1
end
return @id
end
go
insert into z values (dbof_id())
以上,希望对你有所帮助!
一、通过T-SQL代码
代码如下:
alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL
这里用到了identity关键字:indentity(a,b),a b均为正整数,a表示开始数,b表示步长,indentity(1,1)就代表从1开始,每次增加1
二、通过企业管理器
打开对象资源管理器,新建表,如下图
插入列,设置列属性,标识增量为步长,标识种子为开始数,如下图
SQL标识列的查询
1、判段一个表是否具有标识列
可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:
Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')如果有,则返回1,否则返回0
2、判断某列是否是标识列
可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法
SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')如果该列为标识列,则返回1,否则返回0
3、查询某表标识列的列名
SQL Server中没有现成的函数实现此功能,实现的SQL语句如下
SELECT COLUMN_NAME FROM INFORMATION_SCHEMAcolumnsWHERE TABLE_NAME='表名' AND COLUMNPROPERTY(
OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1
4、标识列的引用
如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替
例如,若要查询上例中ID等于1的行,
以下两条查询语句是等价的
SELECT FROM T_test WHERE IDENTITYCOL=1SELECT FROM T_test WHERE ID=1
5、获取标识列的种子值
可使用函数IDENT_SEED,用法:
SELECT IDENT_SEED ('表名')6、获取标识列的递增量
可使用函数IDENT_INCR ,用法:
SELECT IDENT_INCR('表名')7、获取指定表中最后生成的标识值
可使用函数IDENT_CURRENT,用法:
SELECT IDENT_CURRENT('表名')注意事项:当包含标识列的表刚刚创建,为经过任何插入 *** 作时,使用IDENT_CURRENT
函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。
SQL Server自增字段可以在SQL Server Management Studio或使用SQL语句在程序或者查询分析器里面实现,将为您分别说明。
一、在SQL Server Management Studio中实现SQL Server自增字段
打开SQL Server Management Studio,打开数据库之后,在选中的表上点“修改”,在选中需要设置为自增的字段,在右下方的表设计器里选择“标识规范”,选“是”,就设定好了。
二、使用SQL语句在程序或者查询分析器里面实现SQL Server自增字段
sql server 设置自增字段identity属性 (以新建数据表tablename中的id字段为例)
create table tablename
(
id int identity(1,1)
)
这样设置之后,tablename数据表中的id字段就是自增列。
如果想实现带前缀或者后缀的自动增加字段,不能用varchar,还是使用上面的方法创建字段,但是在读取的时候用增加前后缀的形式来显示想要的效果,例如如果你希望得出结果是a001可以这么做select 'a'+convert(varchar(20),id) from tablename,这里的tablename是你建立的具体的表明。
以上就是关于数据库自增列全部的内容,包括:数据库自增列、SQL Server 2008怎样添加自增列实现自增序号、怎么查找SQL Server中哪个字段绑定了自动增长列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)