>데이터 베이스 >MySQL 튜토리얼 >SQL Server 2008 R2 검사 제약 조건에서 하위 쿼리를 어떻게 사용할 수 있습니까?

SQL Server 2008 R2 검사 제약 조건에서 하위 쿼리를 어떻게 사용할 수 있습니까?

DDD
DDD원래의
2025-01-03 18:20:39625검색

How Can I Use Subqueries in SQL Server 2008 R2 Check Constraints?

검사 제약 조건의 하위 쿼리: 해결 방법

SQL Server 2008 R2에서 검사 제약 조건의 하위 쿼리를 사용하면 스칼라만 해당한다는 오류 메시지가 표시됩니다. 표현이 허용됩니다. 예를 들어, 다음 코드는 데이터를 삽입할 때 Table1의 열과 Table2의 값을 비교하는 것을 목표로 합니다.

ALTER TABLE Table1
        WITH CHECK ADD CONSTRAINT CK_Code
        CHECK (MyField in (Select Field From Table2))

오류 해결

이 제한을 우회하려면, 대체 접근 방식을 고려하십시오.

1. 함수 사용:

하위 쿼리를 해당 값이 다른 테이블에 존재하는지 여부를 나타내는 스칼라 값(예: True 또는 False)을 반환하는 함수로 변환합니다. 그런 다음 검사 제약 조건에 있는 기능을 사용하세요.

예:

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

2. 대체 구문:

어떤 경우에는 하위 쿼리를 방지하는 대체 구문을 사용하여 검사 제약 조건을 다시 작성할 수 있습니다.

  • EXISTS 사용:

    CHECK (EXISTS (SELECT* FROM Table2 WHERE MYFIELD = MyField))
  • IN과 함께 사용 하위 선택:

    CHECK (MyField IN (SELECT Field FROM Table2))

3. 외래 키 제약 조건:

테이블 간의 관계가 실제 외래 키 관계를 나타내는 경우 가장 적합한 솔루션은 외래 키 제약 조건을 사용하는 것입니다. 이는 참조 무결성을 강화하고 데이터 일관성을 보장합니다.

언급된 해결 방법 중 하나를 구현하면 검사 제약 조건에서 하위 쿼리와 유사한 기능을 활용할 수 있습니다. 단, 함수 구현이나 대체 구문 사용과 같은 추가 고려 사항도 필요합니다.

위 내용은 SQL Server 2008 R2 검사 제약 조건에서 하위 쿼리를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.