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
e-mail testo

simple_users

Colonna genere
nome utente testo
e-mail testo

users_with_password

Colonna genere
nome utente testo
e-mail 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
e-mail 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
e-mail testo

simple_users

Colonna genere
nome utente testo
e-mail 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