(Oracle)在1个语句中将复合主键设置为外语?

时间:2018-02-05 03:33:28

标签: sql oracle

假设我的表包含一组没有实际主键的复合主键。如何将所有这些复合主键设置为外键并将它们分别链接到其父表?

这3个需要设置为外键,并链接到另一个表中的主键AgencyID

AgencyID                 
PickUpAgencyID           
DropOffAgencyID 

这一个以及另一个表。

DriverLicenseNumber

这可以一次性完成吗?

Create table RENTAL (

RentalAgreementNumber    Number(6)    NOT NULL,   
DriverLicenseNumber      Number(9)    NOT NULL,  
VinNumber                Number(9)    NOT NULL,
AgencyID                 Number(6)    NOT NULL,
PickUpAgencyID           Number(6)    NOT NULL,
DropOffAgencyID          Number(6)    NOT NULL,
PickUpDate               DATE         NOT NULL,
PickUpTime               TIMESTAMP    NOT NULL,
DropOffDate              DATE         NOT NULL,
DropOffTime              TIMESTAMP    NOT NULL,
PickUpOdometer           Number(6)    NOT NULL,
DropOffOdometer          Number(6)    NOT NULL,
RentalCost               Dec(8,2)     NOT NULL,
FuelOptionID             Number(2)    NOT NULL,
FuelOptionDesc           Varchar2(10) NOT NULL,
InsuranceCost            Dec(8,2)     NOT NULL
);

1 个答案:

答案 0 :(得分:0)

是的,只能使用一个ALTER TABLE命令。

假设另一个表名是AB

alter table RENTAL
add constraint rental_a_fk foreign key (AgencyID, PickUpAgencyID, DropOffAgencyID)
    references a(AgencyID, PickUpAgencyID, DropOffAgencyID)
add constraint rental_b_fk foreign key (DriverLicenseNumber)
    references b( DriverLicenseNumber )
;

演示:http://sqlfiddle.com/#!4/ee1c26