我想将表中的所有id增加1000,因为我需要从其他表中插入具有完全相同ID的数据。最好的方法是什么?
答案 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