[英]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.