Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Подзаявки в ограничение за проверка

Забележете, това, което наистина искате, е ограничение за външен ключ. Въпреки това, за да получите „заявка“ в проверка, можете да напишете функция, която съдържа заявката и извежда скаларна стойност, след което да използвате тази функция в ограничението за проверка.

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

Нещо такова. Не е тествано.

След това можете да го добавите към чека си така

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. Предайте променлива в тригер

  2. Разберете към кой дял ще бъде съпоставена дадена стойност в SQL Server (T-SQL)

  3. Променете стойността по подразбиране в SQL Server

  4. Най-добрият начин да направите логика на вложени случаи в SQL Server

  5. Премахнете SCHEMABINDING от дефинирана от потребителя функция в SQL Server