postgresql
Dziedzictwo
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 |
tekst |
simple_users
Kolumna | Rodzaj |
---|---|
Nazwa Użytkownika | tekst |
tekst |
users_with_password
Kolumna | Rodzaj |
---|---|
Nazwa Użytkownika | tekst |
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 |
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 |
tekst |
simple_users
Kolumna | Rodzaj |
---|---|
Nazwa Użytkownika | tekst |
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