Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Subconsultas na restrição de verificação


Observe que o que você realmente deseja é uma restrição de chave estrangeira. Dito isso, para obter uma "consulta" em uma verificação, você pode escrever uma função que contenha a consulta e produza um valor escalar e, em seguida, use essa função na restrição de verificação.
CREATE FUNCTION myFunction (
    @field DATATYPE(?)
)
RETURNS VARCHAR(5)
AS
BEGIN
    IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field)
        return 'True'
    return 'False'
END

Algo parecido. Não testado.

Então você pode adicioná-lo ao seu cheque assim
ALTER TABLE Table1
    WITH CHECK ADD CONSTRAINT CK_Code
    CHECK (myFunction(MYFIELD) = 'True')