Upsert无法插入

时间:2015-02-23 14:44:56

标签: sql sql-server-2012 upsert

我有以下SQL

BEGIN
DECLARE @UpdateCount int
    EXEC (@UpdateSQL)
SET @UpdateCount = @@RowCount


IF (@UpdateCount < 1)
BEGIN
    EXEC (@InsertSQL)
END
END
SET NOCOUNT ON;

它存在于一个触发器中,但是它没有像我期望的那样工作,它更新但是没有插入,我不知道我错过了什么..

@InsertSQL里面的SQL也很好,我已经测试了这个。

1 个答案:

答案 0 :(得分:0)

根据文档,EXECUTE语句不会影响@@ ROWCOUNT:

https://technet.microsoft.com/en-us/library/ms187316(v=sql.110).aspx

一个选项是使用sp_executesql和输出参数:

DECLARE @UpdateCount int
SET @UpdateSQL = @UpdateSQL + '; select @UpdateCount = @@rowcount'
exec sp_executesql @UpdateSQL, N'@UpdateCount int output', @UpdateCount = @UpdateCount output

我说实话,我已经无法在任何版本的SQL Server中重现您的问题,因此您的问题必须更多。