繁体   English   中英

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

[英]Only insert data into a database if it doesn't exist already

我正在尝试编写允许我仅插入具有不同 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);

但它不起作用,当我尝试这个时,没有任何东西被添加到数据库中。 如何更正此查询?

谢谢,

代替 :

insert into User(UserId,Name,Profession) 
       values(@UserId,@Name,@Profession) 
       WHERE NOT EXISTS (Select UserId From User where UserId = @UserId)

使用此查询:

insert into User(UserId,Name,Profession) 
       select @UserId, @Name, @Profession
       where not exists (Select UserId From User where UserId = @UserId)

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

尝试这个:

SqlCommand cmd = new SqlCommand("IF NOT EXISTS (Select UserId From User where UserId = @UserId) insert into User(UserId,Name,Profession) values(@UserId,@Name,@Profession) ", con);

这与 SQL 查询实现相同。

IF NOT EXISTS (Select UserId From User where UserId = @UserId
insert into User(UserId,Name,Profession) values(@UserId,@Name,@Profession)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM