关于 Sql Server 标识规范(自动编号)的问题?
问题是这样的:现状:数据库中有一张表student,第一列为id表中已经有了一些数据需求:把id这列改成自动增加(我只知道标识规范可以,其他有什么方法吗?)需要保持现有数...
问题是这样的:
现状:
数据库中有一张表student,第一列为id
表中已经有了一些数据
需求:
把id这列改成自动增加(我只知道标识规范可以,其他有什么方法吗?)
需要保持现有数据中的id不变
补充:id是主键,现在想以后添加数据的时候id自动增加
嗯,非常感谢wangzhiqing999朋友,也谢谢泪尽流殇,因为这些数据时自动从access数据库中导入进来的,student表中的数据和其他表中的数据有关联,所以不能改现有student中的id。谢谢各位的帮助 展开
现状:
数据库中有一张表student,第一列为id
表中已经有了一些数据
需求:
把id这列改成自动增加(我只知道标识规范可以,其他有什么方法吗?)
需要保持现有数据中的id不变
补充:id是主键,现在想以后添加数据的时候id自动增加
嗯,非常感谢wangzhiqing999朋友,也谢谢泪尽流殇,因为这些数据时自动从access数据库中导入进来的,student表中的数据和其他表中的数据有关联,所以不能改现有student中的id。谢谢各位的帮助 展开
2个回答
展开全部
SQL Server
通过 IDENTITY 来设置
参数有2个,一个是“初始值” 一个是“增量”。
默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。
IDENTITY只能在如下情况下建立:
在创建表时创建新的IDENTITY列
在现有表中创建新的IDENTITY列
不能 把已经存在的列,修改为IDENTITY列
楼主要求 “需要保持现有数据中的id不变”
也就是不能删除 id 列, 然后再加一个 IDENTITY 的 id 列了。
那么可以考虑,另外建立一个表,里面就一行一列,存储一个 序列号。
初始值= student表的最大id.
student 上面,加一个触发器
当数据插入的时候,触发器读取那个 序列号的表,然后+1,再更新序列号表。
再更新student 表。
SQL Server 好像没有像 Oracle 的那种 序列号的东西。
如果有的话,就用个序列号来 替代掉那个 一行一列,序列号的表。
通过 IDENTITY 来设置
参数有2个,一个是“初始值” 一个是“增量”。
默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。
IDENTITY只能在如下情况下建立:
在创建表时创建新的IDENTITY列
在现有表中创建新的IDENTITY列
不能 把已经存在的列,修改为IDENTITY列
楼主要求 “需要保持现有数据中的id不变”
也就是不能删除 id 列, 然后再加一个 IDENTITY 的 id 列了。
那么可以考虑,另外建立一个表,里面就一行一列,存储一个 序列号。
初始值= student表的最大id.
student 上面,加一个触发器
当数据插入的时候,触发器读取那个 序列号的表,然后+1,再更新序列号表。
再更新student 表。
SQL Server 好像没有像 Oracle 的那种 序列号的东西。
如果有的话,就用个序列号来 替代掉那个 一行一列,序列号的表。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询