sql >> Base de Datos >  >> RDS >> PostgreSQL

Crear una tabla de dos tipos en PostgreSQL

No puede hacer prod_id la clave principal de table1 porque las únicas columnas son los dos tipos compuestos info y movie . No puede acceder a los tipos base de estos tipos compuestos en una PRIMARY KEY cláusula.

Lo que intentabas hacer funciona con una restricción de pk en info o movie .
Excepto que probablemente no sea lo que estabas buscando, lo cual no es posible de esta manera.

Podrías implementar algo como esto con...

Herencia

Aquí puede heredar de varias tablas principales (sustituir sus tipos). Ejemplo:

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;

-> violín SQL demostrando ambos.

Asegúrese de leer sobre las limitaciones de la herencia en el manual.