sql >> Database teknologi >  >> RDS >> PostgreSQL

Opret en tabel med to typer i PostgreSQL

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.




  1. Hvordan returnerer jeg heltal og numeriske kolonner fra MySQL som heltal og numeriske i PHP?

  2. Java-type for dato/klokkeslæt, når du bruger Oracle Date med Hibernate

  3. Kan ikke indlæse sqlite-databasen ved første kørsel

  4. Kontrollerer, om en postgresql-tabel eksisterer under python (og sandsynligvis Psycopg2)