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.