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