sql >> Databáze >  >> RDS >> Sqlserver

Dílčí dotazy v kontrolním omezení

Všimněte si, že to, co opravdu chcete, je omezení cizího klíče. To znamená, že chcete-li získat "dotaz" do kontroly, můžete napsat funkci, která obsahuje dotaz a vydá skalární hodnotu, a poté tuto funkci použít v omezení kontroly.

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

Něco takového. Netestováno.

Pak si to můžete přidat ke svému šeku takto

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


  1. Yii2:automatické vyplňování polí na základě jiného pole ze související tabulky

  2. Hodnota Postgres SSLMode vyžaduje neplatnost, když podpora SSL není zkompilována pomocí Foreign Data Wrapper

  3. jak pracovat s dynamickými daty a google grafy?

  4. Jak uložit jednu entitu Doctrine do dvou databázových tabulek (vyžadováno pro optimalizaci MySQL)