3

I have 3 tables: Member, Employer, and Location.

Member has MemberID, EmployerID, and LocationID.
Employer has EmployerID.
Location has EmployerID, LocationID.

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

I need to make a check constraint on member that says

A member's location is either null, or a location belonging to its employer

How do I constrain Member.LocationID to a location having the same EmployerID? ie: Member.EmployerID = Location.EmployerID?

Sam DeHaan
  • 10,246
  • 2
  • 40
  • 48
mtmurdock
  • 12,756
  • 21
  • 65
  • 108

1 Answers1

1

You can create a unique index/primary key on Location (EmployerID, LocationID) (I take it that this may well be the case already)

Then have a multi column FK referencing that from 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)
)
Martin Smith
  • 438,706
  • 87
  • 741
  • 845