Você não pode fazer
prod_id
a chave primária de table1
porque as únicas colunas são os dois tipos compostos info
e movie
. Você não pode acessar os tipos base desses tipos compostos em uma PRIMARY KEY
cláusula. O que você estava tentando fazer funciona com uma restrição pk em
info
ou movie
.Exceto, provavelmente não é o que você estava procurando, o que não é possível desta forma.
Você poderia implementar algo como isso com...
Herança
Aqui você pode herdar de várias tabelas pai (substituto para seus tipos). Exemplo:
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 demonstrando ambos.
Certifique-se de ler sobre as limitações de herança no manual.