2014-02-05 130 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 ... –