2012-03-20 107 views
2

我有一个用户自定义表类型,可以说@TT dbo.IntType readonly, IntType上是一批int,作为主关键字SQL Server,如何从用户定义的表类型中删除更新元素?

CREATE TYPE [dbo].[IntType] AS TABLE(
    [T] [int] NOT NULL, 
    PRIMARY KEY CLUSTERED 

我喜欢基于在IntType所有键(int)做UPDATEINSERT新行(int)不存在于数据库(一个upsert)

我不知道是否一个简单的方法来删除“更新”键(int)?然后我可以插入其余的。 (或者如果您拥有SQL Server 2010的超级单行插件!!!)

回答

2

使用MERGE语句。

http://technet.microsoft.com/en-us/library/bb510625.aspx

让我看看,如果我可以把东西在一起。

编辑:实例

MERGE INTO [TargetTable] AS T 
USING (SELECT l.T AS 'id' FROM @list l) AS S 
ON (T.[id] = S.[id]) 
WHEN MATCHED THEN 
    UPDATE SET 
     T.updated = 1 
WHEN NOT MATCHED THEN 
    INSERT VALUES ([insert value into each column of target table]); 

编辑2:参数@list是在你的ID填充传递的列表

+0

圣牛,这很简单,我迫不及待地想尝试一下 – 2012-03-20 00:55:30

+1

这真的很好,但这只适用于2008年和以后。既然你使用的是2010年,我觉得你会没事的。 – spinon 2012-03-20 00:56:34

+2

什么是SQL Server 2010? – 2012-03-20 02:13:45

相关问题