好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SqlServerMysql数据库修改自增列的值及相应问题的解决方案

SQL Server 平台修改自增列值

由于之前处理过sql server数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL 语句修改自增列值,是严格不允许的,直接报错(无法更新标识列 '自增列名称‘)。sql server我测试是2008、2012和2014,都不允许变更自增列值,我相信SQL Server 2005+的环境均不允许变更字段列值。

如果非要在SQL Server 平台修改自增列值的,那就手动需要自增列属性,然后修改该列值,修改成功后再手动添加自增列属性。如果在生成环境修改自增列的话,建议在空闲时间(零点以后,平台或网站使用的用户很少的时间段)来处理这类问题。数据量大且多表关联的,那就通过T-SQL来变更。该方法最大的缺点就是要通过手工辅助取消和添加自增属性的。

还有一个方法,先将要修改的数据整理为T-SQL的插入脚本,再删除这批要修改的数据,在通过显示插入数据来实现。这种方式适用于要变更不较少的单表记录,该方法到时比较灵活的。

更简单的方法,那就是如果仅仅若干条,那就让运营人员重新发布信息,删除以前的数据。

还有网上通过修过T-SQL语句取消自增属性,我在SQL Server 2005+环境测试均未通过,相应的T-SQL代码如下:

EXEC sys.sp_configure
@configname = 'allow updates', -- varchar(35)
@configvalue = 1; -- int
EXEC sys.sp_configure
@configname = 'show advanced options' , -- varchar(35)
@configvalue = 1; -- int
RECONFIGURE WITH OVERRIDE;
GO
UPDATE sys.syscolumns
SET colstat = 1
WHERE id = OBJECT_ID(N'PrimaryKeyAndIdentityUpdateTestDataTable', 'U')
AND name = N'ID'
AND colstat = 1;
UPDATE sys.columns
SET is_identity = 0
WHERE object_id = OBJECT_ID(N'PrimaryKeyAndIdentityUpdateTestDataTable', 'U')
AND name = N'ID'
AND is_identity = 1; 

查看更多关于SqlServerMysql数据库修改自增列的值及相应问题的解决方案的详细内容...

  阅读:54次