Ich habe einen klassischen Fall von UPDATE oder Einfügen von Daten in eine Tabelle. Ich bin mir nicht sicher, ob ich nur ein UPDATE machen sollte und wenn ich null ROWCOUNT bekomme, dann führe einen INSERT aus. Alternativ habe ich Gerüchte gehört, dass das MERGE-Statement dies nun ersetzt, aber ich bin mir nicht sicher, wie und ob es in dieser Situation angebracht ist.Ist die Sql2008 MERGE-Syntax, was ich tun sollte, hier?
Hier einige Beispiel-SQL, um dies zu demonstrieren ...
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
Gedanken?
Marc, kann u Ihre Antwort mit meinem Beispiel SQL bearbeiten? –
@Marc, also können Sie nicht, dass eine Zieltabelle und eine Quellentabelle dasselbe sind? –
nein - das wird nicht funktionieren. Sie müssen die aktuelle Tabelle haben, die alle Ihre Daten hat, und dann müssen Sie eine Tabelle mit den Änderungen angewendet werden, um –