2012-03-21 4 views
3

У меня есть 3 таблицы: член, работодатель и местоположение.SQL: Проверить ограничение зависит от других таблиц

Член имеет MemberID, EmployerID и LocationID.
Работодатель имеет EmployerID.
Местоположение имеет EmployerID, LocationID.

Member <<---> Employer 
Location <<---> Employer 
Member <---> Location 

мне нужно сделать проверочное ограничение на член, который говорит

расположение государства-члена либо нулевой, либо место принадлежность к своему работодателю

Как сдерживаю член. LocationID в местоположении, имеющем тот же идентификатор EmployerID? т.е.: Member.EmployerID = Location.EmployerID?

ответ

1

Вы можете создать уникальный индекс/первичный ключ на Location (EmployerID, LocationID) (я понимаю, что это вполне может быть так уже)

Тогда есть несколько столбцов FK ссылающихся, что из Member

CREATE TABLE Location 
(
EmployerID INT, 
LocationID INT, 
PRIMARY KEY (EmployerID,LocationID) 
) 


CREATE TABLE Member 
(
MemberID INT PRIMARY KEY, 
EmployerID INT, 
LocationID INT, 
FOREIGN KEY (EmployerID,LocationID) 
    REFERENCES Location (EmployerID,LocationID) 
)