Maison >base de données >tutoriel mysql >Comment puis-je utiliser des sous-requêtes dans les contraintes de vérification de SQL Server ?
Dans SQL Server 2008 R2, tentative de définition d'une contrainte de vérification avec une sous-requête, telle que :
ALTER TABLE Table1 WITH CHECK ADD CONSTRAINT CK_Code CHECK (MyField in (Select Field From Table2))
entraîne une erreur indiquant que les sous-requêtes ne sont pas autorisées dans ce contexte.
Pour réaliser cette validation sans déclencheur, une fonction scalaire qui encapsule la sous-requête peut être créée et utilisée dans la contrainte de vérification. Voici un exemple :
CREATE FUNCTION myFunction( @field DATATYPE(?) ) RETURNS VARCHAR(5) AS BEGIN IF EXISTS (SELECT * FROM Table2 WHERE MYFIELD = @field) RETURN 'True' RETURN 'False' END
Une fois la fonction définie, elle peut être utilisée dans la contrainte de vérification comme suit :
ALTER TABLE Table1 WITH CHECK ADD CONSTRAINT CK_Code CHECK (myFunction(MYFIELD) = 'True')
En vérifiant la valeur scalaire renvoyée par la fonction par rapport à une chaîne spécifique (par exemple, « Vrai »), la validation souhaitée est appliquée sans le besoin d'une sous-requête directement dans la contrainte de vérification.
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!