postgresql
Héritage
Recherche…
Remarques
Une explication de la raison pour laquelle vous souhaitez utiliser l'héritage dans PostgreSQL est disponible ici: http://stackoverflow.com/a/3075248/653378
Créer des tables enfants
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
CREATE TABLE users_with_password (password text) INHERITS (users);
Nos trois tableaux ressemblent à ceci:
utilisateurs
Colonne | Type |
---|---|
Nom d'utilisateur | texte |
texte |
simple_users
Colonne | Type |
---|---|
Nom d'utilisateur | texte |
texte |
users_with_password
Colonne | Type |
---|---|
Nom d'utilisateur | texte |
texte | |
mot de passe | texte |
Modification de tables
Créons deux tables simples:
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
Ajouter des colonnes
ALTER TABLE simple_users ADD COLUMN password text;
simple_users
Colonne | Type |
---|---|
Nom d'utilisateur | texte |
texte | |
mot de passe | texte |
L'ajout de la même colonne à la table parente va fusionner la définition des deux colonnes:
ALTER TABLE users ADD COLUMN password text;
AVIS: fusion de la définition de la colonne "mot de passe" pour l'enfant "simple_users"
Supprimer des colonnes
En utilisant nos tables modifiées:
ALTER TABLE users DROP COLUMN password;
utilisateurs
Colonne | Type |
---|---|
Nom d'utilisateur | texte |
texte |
simple_users
Colonne | Type |
---|---|
Nom d'utilisateur | texte |
texte | |
mot de passe | texte |
Depuis que nous avons ajouté la colonne à simple_users
, PostgreSQL simple_users
s'assure que cette colonne n'est pas supprimée.
Maintenant, si nous avions une autre table enfant, sa colonne de password
aurait bien sûr été supprimée.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow