PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

полиморфизъм за ограничения на FOREIGN KEY

Ето модела, който използвах.

CREATE TABLE room (
    room_id serial primary key,
    room_type VARCHAR not null,

    CHECK CONSTRAINT room_type in ("standard_room","family_room"),
    UNIQUE (room_id, room_type)
);

CREATE_TABLE standard_room (
    room_id integer primary key,
    room_type VARCHAR not null default "standard_room",

    FOREIGN KEY (room_id, room_type) REFERENCES room (room_id, room_type),
    CHECK CONSTRAINT room_type  = "standard_room"
);
CREATE_TABLE family_room (
    room_id integer primary key,
    room_type VARCHAR not null default "family_room",

    FOREIGN KEY (room_id, room_type) REFERENCES room (room_id, room_type),
    CHECK CONSTRAINT room_type  = "family_room"
);

Тоест, „подкласовете“ сочат към суперкласа чрез колона за дескриминатор на тип (така че посоченият базов клас е от правилния тип и този първичен ключ на суперкласа е същият като дъщерните класове




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Услуга за база данни PostgreSQL

  2. Удостоверяването на CAS база данни не работи

  3. Еквивалент на описваща таблица в PgAdmin3

  4. Може ли PostgreSQL да извърши свързване между две съхранени процедури на SQL Server?

  5. Как да премахнете дубликати, които се генерират с array_agg postgres функция