sql >> Database >  >> RDS >> PostgreSQL

Maak een tabel van twee typen in PostgreSQL

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.




  1. Wat is er nieuw in MariaDB MaxScale 2.4

  2. Een CLOB exporteren naar een tekstbestand met Oracle SQL Developer

  3. Disaster Recovery voor Galera-cluster geïmplementeerd in een hybride cloud

  4. SQLite-tabel maken