Vous ne pouvez pas créer de prod_id
la clé primaire de table1
car les seules colonnes sont les deux types composites info
et movie
. Vous ne pouvez pas accéder aux types de base de ces types composites dans une PRIMARY KEY
clause.
Ce que vous essayez de faire fonctionne avec une contrainte pk sur info
ou movie
.
Sauf que ce n'est probablement pas ce que vous cherchiez, ce qui n'est pas possible de cette façon.
Vous pourriez implémenter quelque chose comme ceci avec ...
Héritage
Ici, vous pouvez hériter de plusieurs tables parentes (se substituer à vos types). Exemple :
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 démontrant les deux.
Assurez-vous de lire les limitations de l'héritage dans le manuel.