sql >> Databasteknik >  >> RDS >> PostgreSQL

Skapa en tabell av två typer i PostgreSQL

Du kan inte skapa prod_id primärnyckeln för table1 eftersom de enda kolumnerna är de två sammansatta typerna info och movie . Du kan inte komma åt bastyperna för dessa sammansatta typer i en PRIMARY KEY klausul.

Det du försökte göra fungerar med en pk-begränsning på info eller movie .
Förutom att det förmodligen inte är vad du letade efter, vilket inte är möjligt på det här sättet.

Du kan implementera något likt det här med ...

Arv

Här kan du ärva från flera överordnade tabeller (ersätt dina typer). Exempel:

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 demonstrerar båda.

Se till att läsa om begränsningar för arv i manualen.




  1. Vilket är det mest eleganta sättet att lagra tidsstämpel med nanosec i postgresql?

  2. Hämta en bild lagrad som BLOB på en MYSQL DB

  3. SQLiteReadOnlyDatabaseException:försök att skriva en skrivskyddad databas (kod 1032)

  4. Hur man kontrollerar status för PostgreSQL-servern Mac OS X