sql >> Base de Datos >  >> RDS >> Sqlserver

Subconsultas en restricción de verificación

Tenga en cuenta que lo que realmente desea es una restricción de clave externa. Dicho esto, para obtener una "consulta" en una verificación, puede escribir una función que contenga la consulta y genere un valor escalar, luego use esa función en la restricción de verificación.

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

Algo como eso. No probado.

Luego puede agregarlo a su cheque así

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