Du kan inte skapa prod_id primärnyckeln för table1 eftersom de enda kolumnerna är de två sammansatta typerna info och movie . Du kan inte komma åt bastyperna för dessa sammansatta typer i en PRIMARY KEY klausul.
Det du försökte göra fungerar med en pk-begränsning på info eller movie .
Förutom att det förmodligen inte är vad du letade efter, vilket inte är möjligt på det här sättet.
Du kan implementera något likt det här med ...
Arv
Här kan du ärva från flera överordnade tabeller (ersätt dina typer). Exempel:
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 demonstrerar båda.
Se till att läsa om begränsningar för arv i manualen.