Maison >base de données >tutoriel mysql >Comment puis-je utiliser des sous-requêtes dans les contraintes de vérification de SQL Server ?

Comment puis-je utiliser des sous-requêtes dans les contraintes de vérification de SQL Server ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 18:31:40297parcourir

How Can I Use Subqueries in SQL Server Check Constraints?

Utilisation de sous-requêtes dans les contraintes de vérification

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.

Solution alternative : fonction scalaire

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

Application de la fonction à la contrainte de vérification

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn