2 편집 다음과 같이 관련 기능의 소스 코드입니다. Scaler Function/CHECK CONSTRAINT 작업으로이 기능이 필요합니다. 실제 배치는 그렇게 간단하지 않습니다.간단한 점검 제한 조건 그렇게 간단하지
원래의 질문 : 나는 FileID에 당신은을 삽입 할 수 1의 FileTypeId에 대한 고유되도록 점검 제한 조건을 작성해야 fileURI 내
FileUriId, FileID에, FileTypeId
이름은 다음 표를 가정 FileTypeId 1.
접근 방식입니다 당신이 원하는만큼,하지만 하나의 행 같은 FileID에는 작동하지 않았다 :
1) dbo.fn_CheckFileType를 아이디 수익률은 다음과 같은 논리 INT :
내가 FileID에 1 삽입 ALTER TABLE FileUri ADD CONSTRAINT CK_FileUri_FileTypeId CHECK dbo.fn_CheckFileTypeId(FileId) <= 1
가 두 번 FileTypeId 1, 두 번째 삽입이 허용 SELECT Count(FileId) FROM FileUri WHERE FileTypeId = 1
2).
감사합니다!
이것은 발언을위한 것입니다. 샘플은 단순화 된 것이 었습니다. 내 사과. 실제 인스턴스는 점검 제한 조건으로 작동해야합니다. –
@Eric - [스냅 샷 격리를 사용하지 않는 한] (http://sqlblog.com/blogs/hugo_kornelis/archive/2006/09/15/Snapshot-and-integrity-part-4.aspx) 일반적인 접근 방법 인덱스 기반 제약 조건만큼 효율적으로 작동하지 않아야하는 것처럼 보입니다. 스냅 샷을 사용하고 있습니까? 기능 코드에 오류가 없다고 확신합니까? 따로 테스트 해 봤니? –
필자는 (예측 가능하게) 내 스키마를 약간 수정하고 제안한 단순한 고유 제한 방법을 사용할 수있었습니다. 목례. –