U kunt geen prod_id
. maken de primaire sleutel van table1
omdat de enige kolommen de twee samengestelde typen zijn info
en movie
. U heeft geen toegang tot de basistypen van deze samengestelde typen in een PRIMARY KEY
clausule.
Wat u probeerde te doen, werkt met een pk-beperking op info
of movie
.
Behalve, het is waarschijnlijk niet wat u zocht, wat op deze manier niet mogelijk is.
Je zou iets kunnen implementeren zoals dit met ...
Overerving
Hier kunt u overnemen van meerdere bovenliggende tabellen (vervang uw typen). Voorbeeld:
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 beide demonstreren.
Lees over de beperkingen van overerving in de handleiding.