2011-07-13 55 views
0

我使用SQL Server 2008,在我所有的表的GUID,并使用一些存储过程。我想知道是否有办法输出当前正在更新的GUID?更新时使用OUTPUT for SQL Server 2008?

我知道有低于代码我在其他程序使用:

output inserted.* 
output deleted.* 

不过,我有一个是一个,如果空的insert,否则,更新的情况。我想知道在每种情况下使用了哪个GUID。我已经听到了另一种方法来创建另一个表,将表中的值设置为刚刚更新的GUID,然后从新创建的表中选择值,但这看起来非常多余且不必要。任何解决方法?

谢谢!

回答

1

你有NEWID()作为缺省的列或你生成代码中的一个GUID当你插入/更新?

如果你有一个NewID()的缺省值,那么没有办法获取最后插入/更新的数据,如果它是你可以使用@@ IDENTITY获得最后插入的ID的身份。

只有这样我才能想到做你想做的就是从列中取出默认值,在你的代码中插入NewID()并记住它是什么。

+0

那么它适用于插入的值(这个答案与你使用GUIDS作为PK的假设制造)。我仍然使用GUID行的缺省值作为NEWID(),它工作正常。但是,更新一不会传回GUID。对我来说不是一个大问题,但确实很不方便。 – ImGreg

+0

GUID是PK吗?如果是这样,那么您在更新时已经知道它。否则,只需添加代码以根据相同的表/ where子句选择guid来获取刚刚更新的那个。 – Treborbob