Utiliser des fonctions pour amplifier les contraintes de vérification
L'amélioration de la fonctionnalité des contraintes de vérification peut parfois présenter des défis, comme en témoigne la situation où l'on doit vérifier données par rapport à une autre table lors de l'insertion. L'utilisation de sous-requêtes dans ce scénario déclenche une erreur, faisant allusion à l'interdiction de telles constructions dans les définitions de contraintes de vérification.
Heureusement, il existe une approche alternative qui contourne la restriction imposée sur les contraintes de vérification. En créant une fonction qui intègre la requête souhaitée et génère une valeur scalaire, nous pouvons incorporer la fonctionnalité de la requête dans la contrainte de vérification. L'extrait de code suivant illustre cette technique :
CREATE FUNCTION myFunction ( @field DATATYPE(?) ) RETURNS VARCHAR(5) AS BEGIN IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field) return 'True' return 'False' END
Avec cette fonction en place, nous pouvons l'intégrer de manière transparente dans la contrainte de vérification en utilisant la syntaxe suivante :
ALTER TABLE Table1 WITH CHECK ADD CONSTRAINT CK_Code CHECK (myFunction(MYFIELD) = 'True')
En adoptant cette approche , nous étendons efficacement les capacités des contraintes de vérification, nous permettant de valider les données par rapport à des tables externes et d'appliquer des règles métier complexes sans recourir à des déclencheurs.
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!