时间:2021-04-16
1 --添加新列 2 ALTER TABLE TABLENAME ADD ID int 3 --赋值 4 UPDATE TABLENAME SET ID = IDENTITY_ID 5 --删除标识列 6 ALTER TABLE TABLENAME DROP COLUMN IDENTITY_ID
一般来说大概有2种较好的方案。
一.通过添加列来替换标识列
替换法
1 --添加新列
2 ALTER TABLE TABLENAME ADD ID int
3 --赋值
4 UPDATE TABLENAME SET ID = IDENTITY_ID
5 --删除标识列
6 ALTER TABLE TABLENAME DROP COLUMN IDENTITY_ID
二.显示值插入(修改会话中的IDENTITY_INSERT ),临时性 ,不彻底该表列性质
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
显式值插入
1 --一般是组合使用,已确保会话中IDENTITY_INSERT的完整状态
2 SET IDENTITY_INSERT TABLENAME ON --关闭
3 INSERT INTO TABLENAME(IDENTYTY_ID,...) VALUES(...)
4 INSERT INTO TABLENAME(IDENTYTY_ID,...) VALUES(...)
5 INSERT INTO TABLENAME(IDENTYTY_ID,...) VALUES(...)
6 SET IDENTITY_INSERT test OFF --开启
关于这种方式,需要注意如下:
A.任何时候,一个会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON ,想修改其他表,必须将前一个ON状态改回OFF。
B.如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。
C.SET IDENTITY_INSERT 的设置是在执行或运行时设置的。
当然还有其他的方案,比如通过系统存储过程sp_configure 修改列的属性. 其中选择看场景吧。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
SQLServer中数据表往往会设置自增列,常见的比如说首列的ID列。往数据表插入新数据的时候,自增列是跳过的,无需插入即会按照设置的自增规则进行列增长。那么,
SQLServer平台修改自增列值由于之前处理过sqlserver数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL语句修改自增列值,是严格不允许的,直接
1、SQLserver中创建表,带有自增列。createtableTest_Table(IdintIdentity(1,1),Namevarchar(20));
对于SQLSERVER2000及更早的版本,需要使用一个自增列,结合临时表来实现。复制代码代码如下:SELECT[AUTOID]=IDENTITY(int,1,
replaceinto和insertintoonduplicatekey区别replace的用法当不冲突时相当于insert,其余列默认值当key冲突时,自增列