如何处理SQL Server数据库中的重复记录

时间:2015-12-22 16:00:50

标签: sql sql-server database sql-server-2008 sql-server-2012

我有一张记录如下图所示的表

Student Table

我必须维护学生ABC的副本,如下所示,因为每个过程中的每个学生只能包含一个活动行。从db end停止每个学生条目重复的最佳方法是什么。 我如何管理活动行的唯一性。

如何检查新的INSERTS以防止将来重复。

5 个答案:

答案 0 :(得分:3)

您可以使用唯一的过滤索引来维护唯一性:

create unique index unq_table_name_processid_filtered
    on table(name, processid) where IsActive = 'true';

Here是有关该主题的文档。

答案 1 :(得分:1)

create unique index unq_table_name_processid_filtered on table(name, processid) where IsActive = 1;

1表示位类型为真

答案 2 :(得分:0)

我会使用调用UDF的CHECK约束来执行此操作。

您也可以使用TRIGGER进行管理。

答案 3 :(得分:0)

试试吧

 WITH CTE 
 AS
    (
    SELECT *,RN=ROW_NUMBER() OVER (PARTITION BY orgName ORDER BY orgName DESC)
    FROM organizations 
    )
    select * 
    from CTE 
    where RN>1

答案 4 :(得分:0)

带过滤器的唯一索引可以解决问题

它也称为过滤索引

T