sql >> Databasteknik >  >> RDS >> Sqlserver

Underfrågor i kontrollbegränsning

Observera att det du verkligen vill ha är en främmande nyckel-begränsning. Som sagt, för att få in en "fråga" i en check kan du skriva en funktion som innehåller frågan och matar ut ett skalärt värde, och sedan använda den funktionen i kontrollrestriktionen.

CREATE FUNCTION myFunction (
    @field DATATYPE(?)
)
RETURNS VARCHAR(5)
AS
BEGIN
    IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field)
        return 'True'
    return 'False'
END

Något sådant. Ej testad.

Sedan kan du lägga till den i din check som så

ALTER TABLE Table1
    WITH CHECK ADD CONSTRAINT CK_Code
    CHECK (myFunction(MYFIELD) = 'True')


  1. Felet 'underrapporten kunde inte hittas på den angivna platsen. Kontrollera att underrapporten har publicerats och att namnet är korrekt'

  2. Hur man bäst beräknar aggregeringsdata på n-nivå baserat på data på (n-1)-nivå (Oracle)

  3. Slå samman 2 matriser och summera värdena (numeriska tangenter)

  4. Vad är standardsättet för att få det senaste infognings-id:t?