Du kan ikke lave prod_id
den primære nøgle til table1
fordi de eneste kolonner er de to sammensatte typer info
og movie
. Du kan ikke få adgang til basistyperne for disse sammensatte typer i en PRIMARY KEY
klausul.
Det, du prøvede at gøre, fungerer med en pk-begrænsning på info
eller movie
.
Bortset fra, det er sandsynligvis ikke det, du ledte efter, hvilket ikke er muligt på denne måde.
Du kunne implementere noget lignende dette med ...
Arv
Her kan du arve fra flere overordnede tabeller (erstat dine typer). Eksempel:
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 demonstrerer begge dele.
Sørg for at læse om begrænsninger for arv i manualen.