나는 두 개의 테이블이있다. 내가하고 싶은 일은 동의어 + gettypeforvalue (value)가 고유하지 않으면 더 많은 동의어를 추가하는 것을 거부하는 것입니다.고유 제약 호출하는 사용자 정의 함수
예. (동의어 + 값의 관련 유형이 고유하지 않은)
primarytable:
-------------
value | type
-------------|---------
Toyota F-150 | carmake
GMC Canyon | carmake
secondarytable:
---------------
value | synonym
-------------|---------------
Toyota F-150 | toyota pickup
GMC Canyon | gmc pickup
는 OK이지만,
primarytable:
-------------
value | type
-------------|----------------
Toyota F-150 | carmake
GMC Canyon | carmake
secondarytable:
---------------
value | synonym
-------------|-----
Toyota F-150 | pickup
GMC Canyon | pickup
는 확인 안됩니다.
는
내가 함수
create function uf_getTypeForValue(@value nvarchar(50))
returns nvarchar(50)
as
begin
return (select type from primarytable p where p.value = @value)
end
다음 secondarytable에 고유 제한 조건을 추가하고 시도 그러나
alter table secondarytable add constraint uc_secondarytable_synonym_unique_for_type
unique (synonym, uf_getTypeForValue(value))
을, 나는 성공적으로 불렀다이 Incorrect syntax near '('.
에 오류 메시지가 함수는 전에 check
-constraints에서, 그래서 분명히 고유 한 제약 조건으로 그렇게 할 수 없습니까?
내가 알고 있어야하는 구문 트릭이 있습니까? 아니면 어떻게 다른 방식으로이 작업을 수행 할 수 있습니까?
또한 트리거를 통해 확인 할 수 ... 확실하지하는 더 나은. – Anssssss