我有一个更新的经典案例或将一些数据插入到表中。我不确定是否应该只执行UPDATE,如果我得到零ROWCOUNT,那么请执行INSERT。另外,我听说有传言说MERGE声明现在取代了这一点,但在这种情况下,我不确定如何以及是否合适。Sql2008 MERGE语法是我应该做的,在这里?
下面是一些示例SQL来帮助证明这一点......
ALTER PROCEDURE [dbo].[InsertLocationName]
(
@SomeId INTEGER,
@SomeName NVARCHAR(100)
)
AS
BEGIN
SET NOCOUNT ON
UPDATE TableFoo
SET SomeName = @SomeName
WHERE SomeId = @SomeId
-- Did we update something?
IF @@ROWCOUNT <= 0
-- Nope, so add the record.
INSERT INTO TableFoo
VALUES (@SomeName)
END
想法?
马克,可以用我的例子SQLü编辑您的回复? – 2009-08-14 13:58:12
@Marc,所以你不能有一个目标表和源表是相同的东西? – 2009-08-14 14:05:02
不行 - 这不行。您需要拥有包含所有数据的实际表格,然后您需要一张表格,其中应用了更改 – 2009-08-14 14:06:59