PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz tabelę dwóch typów w PostgreSQL

Nie możesz utworzyć prod_id klucz podstawowy table1 ponieważ jedyne kolumny to dwa typy złożone info i movie . Nie możesz uzyskać dostępu do typów podstawowych tych typów złożonych w PRIMARY KEY klauzula.

To, co próbowałeś zrobić, działa z ograniczeniem pk na info lub movie .
Poza tym, że prawdopodobnie nie jest to to, czego szukałeś, co nie jest możliwe w ten sposób.

Możesz zaimplementować coś podobnego to z ...

Dziedziczenie

Tutaj możesz dziedziczyć z wielu tabel nadrzędnych (zastąp swoje typy). Przykład:

CREATE TABLE info (
  prod_id integer
 ,category integer
);

CREATE TABLE movie (
   title text
  ,actor text
  ,price float
);

CREATE  TABLE movie_info (
   PRIMARY KEY(prod_id)             -- now we can use the base column!
)
INHERITS (info, movie);

INSERT INTO movie_info (prod_id, category, title, actor, price)
VALUES (1, 2, 'who donnit?', 'James Dean', '15.90');

SELECT * FROM movie_info;

-> SQLfiddle demonstrując oba.

Koniecznie przeczytaj o ograniczeniach dziedziczenia w podręczniku.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres dockera z danymi początkowymi nie jest utrwalany przez zatwierdzenia

  2. Aktualizacja zbiorcza/wsadowa/upsert w PostgreSQL

  3. Wiele CTE w jednym zapytaniu

  4. Jak utworzyć sumę kroczącą okresu rozliczeniowego

  5. Instalowanie sterowników PDO dla PostgreSQL na Macu (używając Zend dla Eclipse)