Comment gérer les loggings en double dans la database SQL Server

J'ai une table avec des loggings comme ci-dessous l'image

Table des étudiants

Je dois maintenir la réplique de l'étudiant ABC comme indiqué ci-dessous, car chaque étudiant dans chaque process ne peut contenir qu'une seule ligne active. Quelle est la meilleure façon d'arrêter les duplicates pour chaque input d'étudiant à partir de la fin db. comment je gère l'unicité de la ligne active.

Comment vérifier les nouveaux INSERTS pour éviter de futurs duplicates.

Vous pouvez conserver l'unicité en utilisant un index filtré unique:

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

Voici la documentation sur le sujet.

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

1 pour le type de bit vrai

Je le ferais avec une contrainte CHECK qui appelle un UDF.

Vous pouvez également gérer cela avec un TRIGGER.

essayez-le

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

Un index unique avec un filter peut résoudre le problème

il est également connu comme index filtré

 create unique index unq_table_filtered_IX on table(columns) where condition;