Sie können prod_id
nicht erstellen der Primärschlüssel von table1
weil die einzigen Spalten die beiden zusammengesetzten Typen info
sind und movie
. Sie können nicht auf die Basistypen dieser zusammengesetzten Typen in einem PRIMARY KEY
zugreifen Klausel.
Was Sie versucht haben, funktioniert mit einer pk-Einschränkung für info
oder movie
.
Außer, dass es wahrscheinlich nicht das ist, wonach Sie gesucht haben, was auf diese Weise nicht möglich ist.
Sie könnten so etwas wie implementieren dies mit ...
Vererbung
Hier können Sie von mehreren übergeordneten Tabellen erben (Ersatz für Ihre Typen). Beispiel:
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 demonstriert beides.
Lesen Sie unbedingt im Handbuch über die Einschränkungen der Vererbung nach.