增加表中的ID

时间:2011-02-16 13:50:25

标签: sql sql-server-2008

我想将表中的所有id增加1000,因为我需要从其他表中插入具有完全相同ID的数据。最好的方法是什么?

3 个答案:

答案 0 :(得分:3)

update dbo.table set id = id + 1000
go

答案 1 :(得分:0)

最好的方法是不要那样做。您还必须更改所有相关记录,如果您使用身份,则会变得更加复杂。如果你做错了什么,你就会严重破坏你的数据完整性。我建议您要插入的数据是需要更改值的数据,如果需要关联到另一个tbale中的数据,请将原始ID存储在表格中的新字段中,例如table2id或database2id。如果您无法更改现有表,则可以使用具有旧id值和新id值的查找表。

在任何情况下,如果不先备份,都不应该尝试这种性质的东西。

答案 2 :(得分:0)

首先作为HLGEM,它似乎是一个坏ID(考虑你的id上的外键,你必须向它们添加1000)。

第二个dbo.table已成为Server 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

name:列名OBJECT_NAME:表名

更新整个事情(有一个看起来像这个的棘手请求,但我没有用“update”命令测试):

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