집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server 2008 R2 검사 제약 조건에서 하위 쿼리를 어떻게 사용할 수 있습니까?
검사 제약 조건의 하위 쿼리: 해결 방법
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!