2011-02-16 52 views
0

我想将我的表中的所有ID增加1000,因为我需要插入其他表中的数据,并且使用相同的ID。什么是最好的方式来做到这一点?增加表中的ID

+0

已经在这里问:http://stackoverflow.com/questions/751522/how-to-change-identity-column-values-programmatically – David 2011-02-16 13:53:48

回答

3
update dbo.table set id = id + 1000 
go 
0

最好的办法就是不要那样做。您还必须更改所有相关记录,并且如果您使用身份证,则会变得更加复杂。如果你做错任何事情,你会严重干扰你的数据完整性。我建议您要插入的数据是需要更改值的数据,并且如果您需要与另一个tbale中的数据关联起来,请将原始ID存储在表中的新字段中,名称类似table2id或database2id。如果您无法更改现有表格,则可以使用具有旧ID值和新值的查找表。

在任何情况下,您都不应该先尝试这种性质的东西,而无需先做备份。

0

首先,作为HLGEM它似乎是一个不好的ID(想想你的ID的外键,你必须添加1000)。

在服务器第二dbo.table已成为2008年SYS.TABLES

最后你需要这个请求查找外键列:

SELECT name,OBJECT_NAME(object_id) 
    FROM sys.columns 
    WHERE name like '%id' or name like 'id%' 
--depends on where is 'id' in your columns names 

名:列名,OBJECT_NAME :表名

并更新整个事(这应该是这样一个棘手的请求,但我并没有与“更新”命令来测试):

CREATE TABLE #TablesWithIds (
    columnName varchar(100), 
    tableName varchar(100) 
) 

Insert into #TablesWithIds 
SELECT name as columnName,OBJECT_NAME(object_id) as tableName 
FROM sys.columns 
WHERE name like '%id%' 

update #TablesWithIds.tableName set #TablesWithIds.columnName = #TablesWithIds.columnName +1000 

drop table #TablesWithIds