2012-03-20 55 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

相關問題