'Number of referencing columns in foreign key differs from number of referenced columns error?
I am currently using SQL-Server. I am unable to understand this error regarding a schema for Flight_Leg and Leg_Instance in the following code:
/*The relation _Flight_Leg_ contains information about a flight segment within that route*/
Create Table Flight_Leg(
Leg_number int not null,
Departure_airport_code varchar(3),
Scheduled_departure_time varchar(6),
Arrival_airport_code varchar(3),
Scheduled_arrival_time varchar(6),
/*The maximum number of flight legs(Leg_number in the FLIGHT_LEG) cannot exceed 4*/
CHECK (Leg_number<=4),
Flight_number varchar(255) not null UNIQUE FOREIGN KEY REFERENCES Flight(Flight_number),
PRIMARY KEY (Leg_number,Flight_number),
);
/*The relation _Leg_instance_ contains information on a flight leg from a particular day*/
Create Table Leg_Instance(
Date date not null,
Number_of_available_seats int,
Airplane_id int,
Departure_airport_code varchar(3),
Departure_time varchar(6),
Arrival_airport_code varchar(3),
Arrival_time varchar(6),
Flight_number varchar(255) not null UNIQUE FOREIGN KEY REFERENCES Flight,
Leg_number int not null FOREIGN KEY REFERENCES Flight_Leg(Leg_number,Flight_number),
PRIMARY KEY (Flight_number,Leg_number, Date)
);
The specific part of Leg_number int not null FOREIGN KEY REFERENCES Flight_Leg(Leg_number,Flight_number),that is generating the error.
Thank you in advance!
Solution 1:[1]
Instead of:
Leg_number int not null FOREIGN KEY REFERENCES Flight_Leg(Leg_number,Flight_number),
You shouldn't be associating a multi-column foreign key directly to a single column (and you should always name constraints and provide full references to object names):
...
Leg_number int not null,
CONSTRAINT FK_FlightLeg
FOREIGN KEY(Leg_number, Flight_number)
REFERENCES dbo.Flight_Leg(Leg_number,Flight_number),
...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Aaron Bertrand |
