PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL - Fremdschlüssel verweist auf sich gegenseitig ausschließende Tabellen

Sie könnten zwei Fremdschlüssel mit einer Check-Einschränkung erstellen, die besagt, dass genau einer leer ist:

create table alien (id int primary key);
create table monster (id int primary key);
create table trophy (id int primary key,
    alien_id int references alien(id),
    monster_id int references monster(id),
    check (alien_id is null <> monster_id is null)
);