Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在表中插入多个唯一行_Asp.net_Sql_Sql Server 2008 - Fatal编程技术网

Asp.net 在表中插入多个唯一行

Asp.net 在表中插入多个唯一行,asp.net,sql,sql-server-2008,Asp.net,Sql,Sql Server 2008,我对SQL不太熟悉。我试图将多行数据插入到一个表中,如果businessfilterprase列中存在具有重复值的行,则不插入。我写了一个我认为应该是的伪代码 if (filterCategoryList != null) { foreach (KeyValuePair<string, int> filter in filterCategoryList) { cmd.CommandText = "insert into tblBusinessName (Bus

我对SQL不太熟悉。我试图将多行数据插入到一个表中,如果businessfilterprase列中存在具有重复值的行,则不插入。我写了一个我认为应该是的伪代码

if (filterCategoryList != null)
{
   foreach (KeyValuePair<string, int> filter in filterCategoryList)
   {
      cmd.CommandText = "insert into tblBusinessName (BusinessFilterPhrase,BusinessCategoryID)" +
                        "select @BusinessFilterPhrase,@BusinessCategoryID" +
                        "from tblBusinessName as t1" +
                        "where NOT EXISTS" +
                        "( select * from tblBusinessName as d1 where d1.BusinessFilterPhrase = @BusinessFilterPhrase) ";

      cmd.Parameters.AddWithValue("@BusinessFilterPhrase", filter.Key);
      cmd.Parameters.AddWithValue("@BusinessCategoryID", filter.Value.ToString());

      cmd.ExecuteNonQuery();
   }
}

您的代码看起来是正确的。我会这样写:

insert into tblBusinessName(BusinessFilterPhrase, BusinessCategoryID)
    select @BusinessFilterPhrase, @BusinessCategoryID
    from tblBusinessName t1
    where NOT EXISTS (select 1
                      from tblBusinessName d1
                      where d1.BusinessFilterPhrase = @BusinessFilterPhrase
                     )
这些变化只是表面上的

编辑:

如果性能是一个问题,请在BusinessFilterPhrase上创建索引:


您可以将其设置为唯一索引,如果希望数据库强制执行列的唯一性,则在插入重复值时会生成错误。

是否有其他方法可以更好地扩展查询,如插入500次?例子?加入?
create index idx_tblBusinessName_BusinessFilterPhrase on tblBusinessName(BusinessFilterPhrase);