仅将数据插入数据库(如果该数据库尚不存在)

时间:2017-04-18 09:23:20

标签: c# sql-server database 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);

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

谢谢,

4 个答案:

答案 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)