首页 > 解决方案 > SQL - 如果不存在

问题描述

我在数据库中有一个表,其中存在一些记录。

桌子

当我添加新记录时,如果该记录存​​在于数据库中,我需要按“名称”列检查。如果这样的记录不存在 - 然后添加它,如果存在 - 然后更新。我正在尝试这样:

USE [TestDB]
GO

DECLARE @daily nvarchar = 'DailySummaryEmailProcessor'


IF NOT EXISTS ( SELECT *
                    FROM   [dbo].Crons
                    WHERE   name = @daily) 
            BEGIN                    
                   INSERT INTO [dbo].Crons (CronJobID, Name, Description)
                                    VALUES()                         
            END

ELSE
             BEGIN 
                   UPDATE  [dbo].Crons
                   SET
                   WHERE
             END

标签: sqlsql-serverexists

解决方案


MERGE 应该符合您的要求MERGE (Transact-SQL)

MERGE Crons AS target  
USING (SELECT @Name) AS source (Name)  
ON (target.Name = source.Name)  
WHEN MATCHED THEN 
    UPDATE SET target.Name = source.Name 
WHEN NOT MATCHED
    INSERT INTO Crons (Name) VALUES (source.Name)
OUTPUT $action, deleted.Name, inserted.Name

推荐阅读