2011-02-16 53 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