2011-12-20 4 views
5

У меня проблема. Мне нужно ссылаться на один внешний ключ на составной ключ в другой таблице.Внешний ключ к составному ключу

Моя структура базы данных выглядит следующим образом:

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) 
     ); 

мой вопрос: как я могу позволить booking.available_trip_code ссылку на available_trip.trip_code и available_trip.date?

ответ

9

Если вы ссылаетесь на составной первичный ключ, внешний ключ, также должен содержать все столбцы - так что вам нужно что-то вроде:

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

Если вы уже не имеете все те столбцы, присутствующие в таблице , то вам нужно будет добавить их.

4
alter table booking add constraint FK_Booking_TripAndDate 
    foreign key (available_trip_code,date) 
    references available_trip(trip_code, date) 
Смежные вопросы