Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytania podrzędne w ograniczeniu sprawdzającym

Zauważ, że tak naprawdę chcesz mieć ograniczenie klucza obcego. To powiedziawszy, aby uzyskać "zapytanie" do sprawdzenia, możesz napisać funkcję zawierającą zapytanie i wyprowadzającą wartość skalarną, a następnie użyć tej funkcji w ograniczeniu sprawdzającym.

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

Coś w tym stylu. Nie testowano.

Następnie możesz dodać go do czeku w ten sposób

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest najbardziej odpowiedni typ danych do przechowywania adresu IP na serwerze SQL?

  2. baza danych:klucz podstawowy, klastrowany lub nieklastrowany

  3. SQL Server 2008 — po uruchomieniu wyzwalacza Insert/Update, który kopiuje wartości do innej tabeli?

  4. Problemy z instrukcją SQL Server MERGE

  5. Okresowe InvalidCastException i serwer nie mógł wznowić transakcji z Linq