sn0ep
sn0ep

Reputation: 3943

Foreign key to composite key

I have a problem i need to reference a single foreign key to a composite key in another table.

My database structure is as following:

CREATE TABLE available_trip (
trip_code integer not null,
date datetime not null,
primary key(trip_code, date),
FOREIGN KEY (trip_code) REFERENCES trip (trip_code)
);

CREATE TABLE booking (
    available_trip_code integer not null,
    customer_code integer not null,
    date datetime not null,
    deposit float not null,
    total_price float not null,
    has_paid float not null,
    description_en nvarchar(12) null,
    finance_type_code nvarchar(12) not null,
    primary key(available_trip_code, customer_code, date),
    FOREIGN KEY (available_trip_code) REFERENCES available_trip (trip_code, date),


FOREIGN KEY (customer_code) REFERENCES customer (customer_code),
            FOREIGN KEY (finance_type_code) REFERENCES finance_type (finance_type_code)
        );

my question is: how do I let booking.available_trip_code reference to available_trip.trip_code and available_trip.date ?

Upvotes: 10

Views: 12094

Answers (2)

marc_s
marc_s

Reputation: 754268

If you reference a composite primary key, your foreign key also needs to contain all those columns - so you need something like:

FOREIGN KEY (available_trip_code, date) 
            REFERENCES available_trip (trip_code, date)

If you don't already have all those columns present in your table, then you'll need to add them.

Upvotes: 17

Andomar
Andomar

Reputation: 238058

alter table booking add constraint FK_Booking_TripAndDate
    foreign key (available_trip_code,date)
    references available_trip(trip_code, date)

Upvotes: 4

Related Questions