
1、例如给某表添加一个Num自增列,这张表已经有很多行数据了,通过sqlserver表设计器,添加一个新字段Num,如图所示,
2、添加字段后,点击保存,会d出一个小框“不允许保存更改。所做的更改要求删除并重新创建一下表”,这个要求不能满足啊,这么多的数据,删除了怎么办?
3、点击SQL Server Management Studio顶部的菜单工具->选项,
4、打开选项d窗界面如图所示,默认展开的是常规选项,
5、拖动左侧的菜单,找到并点击表设计器->表设计器和数据库设计器,
6、在右侧出现的表选项中,找到并 取消勾选阻止保存要求重新创建表的更改,点击确定按钮,
7、再次在表设计界面,点击保存,如果表中的数据量很大的话,会有这个验证警告:“将定义更改保存到包含有大量数据的表中可能需要很长时间”,此项可以忽略,
8、直接点击是按钮,就可以保存成功了。
可以建立另外一个表,把最大值序列存放在一个字段中,如果增加则最大值+1,删除则最大值-1,这样的话,你的id肯定是连续的。
eg:
t1:(id int,……)你存放留言板内容的表
t2:(maxid int,class varchar)这个表的maxid就存放你留言板中当前最大值+1的值,class用来区分maxid用于那个表。
1、新增记录:只要取出t2表中的相关maxid,将取道的最大值将留言板内容新增到t1表中,增加完后再update t2表中的maxid=maxid+1
2、删除记录:先删除t1表记录,然后update t2表中的maxid=maxid-1
3、修改记录:直接修改t1表,不需要处理t2表中的maxid。
这样t1表中的id永远是连续的。
表的自增量不会因为你删除记录自动-1,他只会记录你使用过的最大值继续计数。除非你把表删除重建。
1、SQL Server 可以在表中直接设定某个字段为自增序列字段,来得比ORACLE容易得多,具体 *** 作参看下图:
(当然,也可以使用建表语句或修改表的语句来实现。)
相关知识点延伸:
1、MS SQL 没有特定的 dual 表,也没有系统级的sequence。
2、Sequence是数据库系统的特性,有的数据库实现了Sequence,有的则没有。比如Oracle、DB2、PostgreSQL数据库实现Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。
3、但这并不表明MS SQL或ORACLE哪一个差,只是实现的思维方式,理念上的差别。
4、正是因为这两个数据库在思维、理念上有很多的差别,所以,虽然这两个是使用得最多的大型数据库,但针对Oracle设计的中大型数据库非常难移植到MS SQL上,反过来也是一样,要想移植,其工作量往往接近于重写。
用Select IDENT_CURRENT(TableName)
IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。
语法
IDENT_CURRENT('table_name')
参数
table_name
是将要返回其标识值的表的名称。table_name 的数据类型为 varchar,没有默认值。
返回类型
sql_variant
注释
IDENT_CURRENT 类似于 Microsoft® SQL Server™ 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,它们在定义"最后"的作用域和会话上不同。
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
以上就是关于求教在sqlserver2008中的表中怎么添加一列自增的列全部的内容,包括:求教在sqlserver2008中的表中怎么添加一列自增的列、关于提取Sql Server 的自动增量序列、我想在SQL server中使用自增序列,怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)