2010-07-03 104 views
3

有沒有辦法將表中每行的某一列設置爲某個唯一值,例如如何爲SQL Server上的列中的每一行設置唯一的ID

update mytable set myCol=rownum() 

SQL Server 2000中 使用SQL(不T/SQL)我不能碰的模式,但我有一個備用列或兩個。

+0

因爲你不能觸摸架構,你是否在代碼中這樣做?如果是這樣,什麼語言? – 2010-07-03 06:43:07

+0

我想對錶執行DML SQL。我無法添加標識符列或類似的東西。 – mikemay 2010-07-03 06:52:09

+0

是否有現有的唯一列?什麼類型的「備用」列? – Oded 2010-07-03 06:52:30

回答

7

假設您有一個主鍵,您可以通過計算行來生成一個唯一值。例如(與你的表的名稱替換#t):

update t 
set  t.col1 = (select COUNT(*) from #t t2 where t.pk >= t2.pk) 
from #t t 

如果你有varchar(36)或更大,可以生成GUID的,這保證是唯一的:

update #t 
set  col1 = NEWID() 

如果你既沒有,你可以使用一個變量。這種技術因爲它沒有設置基礎,所以沒有設置,但它工作得很好:

declare @i int 
set @i = 1 

update #t 
set  col1 = @i 
,  @i = @i + 1 
相關問題