2014-02-05 165 views
0

我開始用它看起來是這樣的一個表:插入和更新

狗(ID,性別,姓名)

這是決定創建一個新的主表。

所有者(ID,姓名)

當所有者ID是一個GUID數據類型。

並更新犬表:

狗(ID,性別,姓名,OWNERID)

由於數據庫正在使用多個程序,而不是所有的程序可以被更新同時決定不執行這個新關係,因此OwnerID允許使用Null值,但所有者Owner ID中的任何值都必須與Owner表中的值相對應。

現在我們已經到達了所有的軟件創建的狗有主人了點,但我們希望解決那裏的狗沒有業主條目。

我們希望創造的是目前沒有一個老闆每條狗的主人空項。 我們並不擔心兩隻狗擁有相同的主人,因此如有必要可以稍後修改。

什麼將是實現這一目標的最有效的方法是什麼? 有效我期待

INSERT INTO [dbo].[Owner] 
     ([ID],[Name]) 
VALUES 
     (newid(), 'n/a') 

對於每一個狗在狗的OWNERID爲空。

然後更新

UPDATE [dbo].[Dog] 
    SET [Owner_ID] = NewIDFromAbove 

是否有任何單個語句或這樣類似的簡潔的方式? 合併會在這裏有用嗎?

回答

0

您可以使用輸出子句來解決這個問題,E.g

declare @newIds table(id nvarchar(255)); 
INSERT INTO [dbo].[Owner] 
     ([ID],[Name]) 
     output inserted.id into @newIds 
VALUES 
     (newid(), 'n/a') 
+0

怎麼能這樣幫助的更新? – Jayvee

+0

單條語句不可能,但我們可以在下一條語句中使用@newIds表格,例如Update Dog ... –