0

次のテーブルと列があります

CarId   MarketId   Description

タイヤ

TireId CarId MarketId Description

CarIdおよびとしての主キーTireId

CarIdここで、外部キーinTireに同じものがMarketIdあるかどうかをチェックするルールを追加したいと思いますCar。トリガーを追加する必要がありますか、それとも別の方法で実行できますか?

4

2 に答える 2

2

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 の組み合わせのみがタイヤ テーブルで使用されるようになります。

于 2013-09-12T13:10:19.900 に答える