我正在努力编写一个允许我只插入具有不同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);
但它不起作用,当我尝试这个时,没有任何东西被添加到数据库中。 如何更正此查询?
谢谢,
答案 0 :(得分:2)
试试这个:
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);
答案 1 :(得分:2)
而不是:
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子句。但是,您可以定义SELECT以指示要插入的值,而不是直接提供值(使用VALUES子句)。在那个SELECT上,您现在可以使用过滤器,连接等......,这样您就可以在那里定义过滤器,检查该行是否仍然存在。
答案 2 :(得分:1)
如果不是EXISTS(从用户选择UserId,其中UserId = @UserId 插入用户(UserId,Name,Profession)值(@ UserId,@ Name,@ Profession) 将适用于SQL Server
答案 3 :(得分:0)