我必須準備一個腳本,用於從幾個表中選擇數據,並在表中插入新行,其中存儲某種多對多關係。T-SQL中的確定性GUID生成
因此,基本上,我有兩個表,其中uniqueidentifier
字段作爲主鍵,另一個表存儲這些表中的兩個外鍵和一些附加數據。他們的主鍵也是uniqueidentifier
。
INSERT ResultTable ([primaryKey],[foreignA], [foreignB])
SELECT newid(), /* <- Can't have it! */
@foreignKeyA,
fb.[primaryKey]
FROM foreignTableB as fb
的問題是,我不能使用newid()
生成對我產生的數據的GUID。其中一個要求是腳本在相同的表上運行時產生相同的結果(包括主鍵)。所以我必須想出一個腳本,它將插入具有uniqueidentifier
值的新行,該值基於另外兩個uniqueidentifier
值生成。
現在,我不知道任何提供從一個GUID到另一個映射的函數。可能沒有任何。但我仍然希望聽到一些建議和意見。
另外:
- 我們可以假設,任何一對的外鍵的是整個表中是唯一
- 我不能改變主鍵字段類型中任何表中提到的
- 這是主要是SQL Server 2005/2008,但有些可能運行SQL Server 2000
在此先感謝。
聽起來這將是一樣一樣的服用整數#1和整數#2,並以某種方式將它們一起消除,使得整數#3可以用作主鍵。我不知道有什麼辦法可以完全確定任何兩對整數(或GUID),而不是產生相同的「輸出」整數。 (哈希算法可能會讓你關閉,如果你可以找到一個生成GUID值) – 2011-03-30 23:20:52
@Philip Kelley:我敢肯定,我可以通過將兩個GUID轉換爲字符串並操作字符(重新排序它們)然後將結果字符串轉換回'uniqueidentifier'。我可能最終會做這樣的事情(儘管它非常混亂,很可能是一個壞主意),但我決定我不必 – Dyppl 2011-03-31 03:07:16