sql >> Databáze >  >> RDS >> PostgreSQL

Vytvořte tabulku dvou typů v PostgreSQL

Nemůžete vytvořit prod_id primární klíč table1 protože jedinými sloupci jsou dva složené typy info a movie . K základním typům těchto složených typů nemáte přístup v PRIMARY KEY doložka.

To, o co jste se pokoušeli, funguje s omezením pk na info nebo movie .
Až to pravděpodobně není to, co jste hledali, což tímto způsobem není možné.

Můžete implementovat něco jako toto s ...

Dědičnost

Zde můžete dědit z více nadřazených tabulek (náhrada za vaše typy). Příklad:

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 předvedení obojího.

Nezapomeňte si přečíst o omezeních dědičnosti v příručce.




  1. 12 Doporučené postupy zabezpečení MySQL/MariaDB pro Linux

  2. Jak přidat pouze odlišné hodnoty pomocí SQLite Sum()

  3. Jak zjistím, zda je hodnota v MySQL celé číslo?

  4. Crystal Reports vs. Microsoft SQL Server Reporting Services