postgresql
Eredità
Ricerca…
Osservazioni
Una spiegazione del motivo per cui si desidera utilizzare l'ereditarietà in PostgreSQL è disponibile qui: http://stackoverflow.com/a/3075248/653378
Creazione di tabelle per bambini
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
CREATE TABLE users_with_password (password text) INHERITS (users);
I nostri tre tavoli hanno questo aspetto:
utenti
Colonna | genere |
---|---|
nome utente | testo |
testo |
simple_users
Colonna | genere |
---|---|
nome utente | testo |
testo |
users_with_password
Colonna | genere |
---|---|
nome utente | testo |
testo | |
parola d'ordine | testo |
Modifica delle tabelle
Creiamo due semplici tabelle:
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
Aggiunta di colonne
ALTER TABLE simple_users ADD COLUMN password text;
simple_users
Colonna | genere |
---|---|
nome utente | testo |
testo | |
parola d'ordine | testo |
L'aggiunta della stessa colonna alla tabella padre fonderà la definizione di entrambe le colonne:
ALTER TABLE users ADD COLUMN password text;
AVVISO: fusione della definizione di colonna "password" per child "simple_users"
Dropping columns
Usando le nostre tabelle modificate:
ALTER TABLE users DROP COLUMN password;
utenti
Colonna | genere |
---|---|
nome utente | testo |
testo |
simple_users
Colonna | genere |
---|---|
nome utente | testo |
testo | |
parola d'ordine | testo |
Da quando abbiamo aggiunto la colonna a simple_users
, PostgreSQL si assicura che questa colonna non venga rilasciata.
Ora, se avessimo un'altra tabella figlio, la sua colonna password
sarebbe stata ovviamente abbandonata.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow