当前位置: 首页 > 面试题库 >

如何防止将重复数据插入SQL Server表中?

谷梁子昂
2023-03-14
问题内容

我有一系列需要写入SQL的数据,我应该怎么做才能检查SQL中的数据以防止将相同的数据插入表中?

要插入的示例数据:

David  
James  
John

如果第四数据John再次出现,我希望系统跳过重复的记录(约翰)。

到目前为止,我有:

SqlConnection myCnn = new SqlConnection(cnn);
String _state = "Insert into CamNo1(platename, date, camID, path, filename) OUTPUT INSERTED.platename values(@msg, getdate(), @camID, @path, @filename)";
SqlCommand _Query = new SqlCommand(_state, myCnn);

_Query.Parameters.AddWithValue("@msg", msg);
_Query.Parameters.AddWithValue("@camID", camID);
_Query.Parameters.AddWithValue("@path", imageFile);
_Query.Parameters.AddWithValue("@filename", name);

try
{
   myCnn.Open();
   string checkname = (string)_Query.ExecuteScalar();
   myCnn.Close();

   getcheckname = checkname;
   Console.WriteLine("OK");
}
catch (Exception)
{
}

我得到了最后插入的字符串值checkname,应该怎么检查数据?


问题答案:

首先,可以通过使用唯一索引或约束来防止表中出现重复项。索引/约束可以工作 在演唱会 与下面的建议。如果
使用唯一索引而不是以下解决方案之一,则插入重复记录将引发错误,而您将需要在另一端进行处理。

另外,我可能会通过一个存储过程来插入数据,该存储过程检查该行是否已经存在。为此,您可以使用 MERGE 语句,如下面的伪代码所示:

create procedure MyProcedure
(
    @Name nvarchar(100),
    ...
)
as

merge MyTable
using
(
    select @Name,...
) as source (Name, ...)
on MyTable.Name = source.Name
when not matched then
    insert (Name,...) values (source.Name,...)
when matched then
    update set Name = @Name,...

或者,您可以检查记录是否存在并手动插入或更新:

create procedure MyProcedure
(
    @Name nvarchar(100),
    ...
)
as

    if not exists (select * from MyTable where Name = @Name)
    begin
        insert into MyTable (Name,...) values (@Name,...)
    end
    else
    begin
            update MyTable
            set ...
            where Name = @Name
    end


 类似资料:
  • 问题内容: 我想防止使用vb.net和MySQL作为数据库的清单表单中出现重复条目​​,这是我的代码: 结束子 我在搜索答案时发现了这个问题,但是当我尝试运行它时,它没有读取插入命令,而是即使没有相同的人员ID也会直接转到msbox“人员ID已经存在”。 有人可以检查为什么不阅读插入内容, 我的数据库表值: pcode =主键 lname =长文本 fname =长文本 办公室=长文本 名称=长文

  • 我想将行插入到具有唯一的、非自动递增主键的表中。 是否有一个本机SQL函数来计算最后一个键并将其递增,还是必须分两步进行:

  • 问题内容: 我正在工作,我有下表 现在我想防止插入,如果我有一个数据,尽管ID不同但存在数据 请指导我如何编写此触发器。 问题答案: 像这样的东西: 那只是为了插入,您可能也想考虑更新。 更新 一种更简单的方法是在表上创建唯一约束,这也将强制它进行更新并消除对触发器的需求。做就是了: 然后你就可以做生意。

  • 本文向大家介绍我们如何使用MySQL REPLACE语句防止插入重复数据?,包括了我们如何使用MySQL REPLACE语句防止插入重复数据?的使用技巧和注意事项,需要的朋友参考一下 我们可以在插入数据时使用REPLACE语句,以防止插入重复数据。如果我们将使用REPLACE 命令而不是INSERT命令,那么如果记录是新记录,则插入记录的方式与INSERT相同,否则,如果记录是重复记录,则新记录将

  • 问题内容: 每次我通过贝宝付款时,我的信息都会在数据库中捕获,但我想防止重复。那么我该如何解决呢?还是应该检查电子邮件重复项? 编辑 据我所知,pinnaclecart将uid设置为primary。所以将它设置为唯一不是“危险”吗? 问题答案: 名字和姓氏都很好,但是除了唯一之外,其他一切都没有。我认识几个与我同名的人,因此我猜想在这两列上建立唯一索引只会令人沮丧,而无济于事。但是,使我与众不同的

  • 问题内容: 如何防止在php mysql中输入重复记录?在插入表之前验证输入。 我目前正在为我的网站建立一个用户注册部分,但是如果在数据库中发现重复的用户名或电子邮件地址,我想向他们显示一个错误。 编辑 这是我到目前为止要插入的行…我将如何在这里实现这两个答案: 我猜我可以在if … else语句中实现所有功能吗? 问题答案: 我使用了sql语句以及if else语句。 然后 显示错误消息,以防止