仅当数据不存在时才将数据插入到数据库中

Cod*_*ife 0 c# database sql-server visual-studio

我正在尝试编写允许我只插入具有不同 ID 的记录的代码;如果数据库中已存在相同的 ID,则不应插入该记录。

我的 SQL 代码是这样的:

SqlCommand cmd = new SqlCommand("insert into User(UserId,Name,Profession) values(@UserId,@Name,@Profession) WHERE NOT EXISTS (Select UserId From User where UserId = @UserId)", con);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,当我尝试此操作时,没有任何内容添加到数据库中。如何更正此查询?

谢谢,

Mar*_*lot 5

代替 :

insert into User(UserId,Name,Profession) 
       values(@UserId,@Name,@Profession) 
       WHERE NOT EXISTS (Select UserId From User where UserId = @UserId)
Run Code Online (Sandbox Code Playgroud)

使用此查询:

insert into User(UserId,Name,Profession) 
       select @UserId, @Name, @Profession
       where not exists (Select UserId From User where UserId = @UserId)
Run Code Online (Sandbox Code Playgroud)

说明:AFAIK 插入命令不能组合 VALUES 和 WHERE 子句。但不是直接提供值(使用 VALUES 子句),您可以定义一个 SELECT 来指示要插入的值。在那个 SELECT 上,您现在可以使用过滤器、连接等......,因此您可以在那里定义过滤器,检查该行是否仍然存在。