次のテーブルと列があります
車
CarId MarketId Description
タイヤ
TireId CarId MarketId Description
CarId
およびとしての主キーTireId
。
CarId
ここで、外部キーinTire
に同じものがMarketId
あるかどうかをチェックするルールを追加したいと思いますCar
。トリガーを追加する必要がありますか、それとも別の方法で実行できますか?
次のテーブルと列があります
車
CarId MarketId Description
タイヤ
TireId CarId MarketId Description
CarId
およびとしての主キーTireId
。
CarId
ここで、外部キーinTire
に同じものがMarketId
あるかどうかをチェックするルールを追加したいと思いますCar
。トリガーを追加する必要がありますか、それとも別の方法で実行できますか?
CarID はCAR
テーブル内で一意であるため、CarID/MarketID の組み合わせも一意になります。したがって、外部キー制約の対象となる可能性があるこれら 2 つの列に一意のインデックスを作成できます。
create table car
(
carid integer not null primary key,
marketid integer not null,
description varchar(100) not null
);
create unique index idx_car_market on car (carid, marketid);
create table tire
(
tireid integer not null primary key,
carid integer not null references car, -- this fk is not strictly necessary
marketid integer not null,
description varchar(100) not null
);
alter table tire
add constraint fk_tire_car
foreign key (carid, marketid)
references car (carid, marketid);
外部キーにより、有効な CarID/MarketID の組み合わせのみがタイヤ テーブルで使用されるようになります。