en utilisant la contrainte unique pour empêcher les enregistrements répétés
Dans les opérations de base de données, il est souvent nécessaire d'assurer l'unicité d'une combinaison de colonnes spécifique. Par exemple, considérez le tableau suivant:
Vous devrez peut-être forcer la mise en œuvre d'une contrainte unique pour empêcher la duplication basée sur PersonNumber et Active = 1 combinaison. Cela garantit qu'il n'y a pas deux lignes avec le même nombre de personnes et le même statut actif.
<code>ID | Name | Active | PersonNumber</code>
Ajoutez la contrainte unique à la table existante
Pour ajouter des contraintes uniques au tableau existant, vous pouvez utiliser l'une des méthodes suivantes:
<.> 1. Utilisez la table alter unique
<.> 2. Créez le seul index
<code>ALTER TABLE dbo.yourtablename ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);</code>
Utilisez le déclencheur pour empêcher l'insertion répétée
Si vous souhaitez empêcher l'insertion répétée sans compter sur des anomalies, vous pouvez utiliser le déclencheur au lieu. Ce déclencheur interceptera les tentatives d'insertion et n'autorise l'insertion que lorsqu'il ne viole pas la seule contrainte:<code>CREATE UNIQUE INDEX uq_yourtablename ON dbo.yourtablename(column1, column2);</code>
Exemple: Implémentez l'unicité de PersonNumber et actif
L'exemple suivant montre comment la combinaison de PersonNumber et active dans le tableau des personnes ajoute des contraintes uniques:
<code class="language-sql">CREATE TRIGGER dbo.BlockDuplicatesYourTable ON dbo.YourTable INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON; IF NOT EXISTS ( SELECT 1 FROM inserted AS i INNER JOIN dbo.YourTable AS t ON i.column1 = t.column1 AND i.column2 = t.column2 ) BEGIN INSERT dbo.YourTable(column1, column2, ...) SELECT column1, column2, ... FROM inserted; END ELSE BEGIN PRINT '未执行任何操作。'; -- 更友好的提示信息 END END; GO</code>
Maintenant, toutes les tentatives d'insertion qui violent les contraintes uniques échoueront et affichent des messages d'erreur pour s'assurer qu'il n'y a pas d'enregistrement répété avec le même nombre de personnes et le même état actif. L'instruction remplace le dans le texte d'origine, ce qui facilite la compréhension.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!