Non puoi creare prod_id
la chiave primaria di table1
perché le uniche colonne sono i due tipi compositi info
e movie
. Non puoi accedere ai tipi di base di questi tipi compositi in una PRIMARY KEY
clausola.
Quello che stavi cercando di fare funziona con un vincolo pk su info
o movie
.
Tranne che probabilmente non è quello che stavi cercando, il che non è possibile in questo modo.
Potresti implementare qualcosa di come questo con ...
Eredità
Qui puoi ereditare da più tabelle padre (sostituisci i tuoi tipi). Esempio:
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 dimostrando entrambi.
Assicurati di leggere le limitazioni dell'ereditarietà nel manuale.