我有一个用户定义的表类型,可以说@TT dbo.IntType readonly, IntType是的批处理int,作为主键
@TT dbo.IntType readonly,
int
CREATE TYPE [dbo].[IntType] AS TABLE( [T] [int] NOT NULL, PRIMARY KEY CLUSTERED
我喜欢UPDATE根据中的所有key(int)进行操作IntType,而key()的INSERT新行在int数据库中不存在(upsert)
UPDATE
IntType
INSERT
我想知道是否有一种简单的方法可以删除“ UPDATED”键(int)?然后,我可以插入其余的内容。 (或者,如果您有针对SQL Server 2010的超级单行upsert !!!)
使用该MERGE语句。
MERGE
http://technet.microsoft.com/zh- CN/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填充所传递的列表
@list