Szukaj…


Uwagi

Wyjaśnienie, dlaczego chcesz używać dziedziczenia w PostgreSQL, jest dostępne tutaj: http://stackoverflow.com/a/3075248/653378

Tworzenie tabel dla dzieci

CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
CREATE TABLE users_with_password (password text) INHERITS (users);

Nasze trzy stoły wyglądają następująco:

użytkownicy

Kolumna Rodzaj
Nazwa Użytkownika tekst
e-mail tekst

simple_users

Kolumna Rodzaj
Nazwa Użytkownika tekst
e-mail tekst

users_with_password

Kolumna Rodzaj
Nazwa Użytkownika tekst
e-mail tekst
hasło tekst

Zmienianie tabel

Stwórzmy dwie proste tabele:

CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);

Dodawanie kolumn

ALTER TABLE simple_users ADD COLUMN password text;

simple_users

Kolumna Rodzaj
Nazwa Użytkownika tekst
e-mail tekst
hasło tekst

Dodanie tej samej kolumny do tabeli nadrzędnej spowoduje scalenie definicji obu kolumn:

ALTER TABLE users ADD COLUMN password text;

UWAGA: scalanie definicji kolumny „hasło” dla potomnego „simple_users”

Upuszczanie kolumn

Korzystając z naszych zmienionych tabel:

ALTER TABLE users DROP COLUMN password;

użytkownicy

Kolumna Rodzaj
Nazwa Użytkownika tekst
e-mail tekst

simple_users

Kolumna Rodzaj
Nazwa Użytkownika tekst
e-mail tekst
hasło tekst

Ponieważ po raz pierwszy dodaliśmy kolumnę do simple_users , PostgreSQL zapewnia, że ta kolumna nie zostanie upuszczona.

Gdybyśmy mieli kolejną tabelę podrzędną, jej kolumna z password zostałaby oczywiście usunięta.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow