求教在sqlserver2008中的表中怎么添加一列自增的列

求教在sqlserver2008中的表中怎么添加一列自增的列,第1张

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中使用自增序列,怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9620292.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存