我有一個更新的經典案例或將一些數據插入到表中。我不確定是否應該只執行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