SQL - 插入不存在的位置

VSO*_*VSO 3 sql sql-server sql-server-2012

我有我认为是一个完全无关紧要的查询 - 如果不存在具有匹配ID的值,则将值插入表中:

BEGIN
   INSERT INTO [dbo].[Contact_Categories](Contact_Category_ID, Description)
   VALUES (1, 'Internal')
   WHERE NOT EXISTS( SELECT * FROM [dbo].[Contact_Categories] WHERE Contact_Category_ID = 1)
END
Run Code Online (Sandbox Code Playgroud)

我在where语句周围出错了.为什么?我如何实现目标?

在此输入图像描述

TZH*_*ZHX 10

你的问题来自WHERE对UPDATE/SELECT有效,但INSERT只是不明白它的含义.

但你可以解决这个问题.将您的代码更改为:

BEGIN
   INSERT INTO [dbo].[Contact_Categories](Contact_Category_ID, Description)
   SELECT 1, 'Internal'
   WHERE NOT EXISTS( SELECT * FROM [dbo].[Contact_Categories] WHERE Contact_Category_ID = 1)
END
Run Code Online (Sandbox Code Playgroud)