postgresql
Herencia
Buscar..
Observaciones
Una explicación de por qué querría usar la herencia en PostgreSQL está disponible aquí: http://stackoverflow.com/a/3075248/653378
Creando mesas infantiles
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
CREATE TABLE users_with_password (password text) INHERITS (users);
Nuestras tres mesas se ven así:
usuarios
Columna | Tipo |
---|---|
nombre de usuario | texto |
correo electrónico | texto |
simples_usuarios
Columna | Tipo |
---|---|
nombre de usuario | texto |
correo electrónico | texto |
users_with_password
Columna | Tipo |
---|---|
nombre de usuario | texto |
correo electrónico | texto |
contraseña | texto |
Alterando mesas
Vamos a crear dos tablas simples:
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
Añadiendo columnas
ALTER TABLE simple_users ADD COLUMN password text;
simples_usuarios
Columna | Tipo |
---|---|
nombre de usuario | texto |
correo electrónico | texto |
contraseña | texto |
Agregar la misma columna a la tabla principal combinará la definición de ambas columnas:
ALTER TABLE users ADD COLUMN password text;
AVISO: fusionar la definición de la columna "contraseña" para el niño "simple_users"
Caída de columnas
Usando nuestras tablas alteradas:
ALTER TABLE users DROP COLUMN password;
usuarios
Columna | Tipo |
---|---|
nombre de usuario | texto |
correo electrónico | texto |
simples_usuarios
Columna | Tipo |
---|---|
nombre de usuario | texto |
correo electrónico | texto |
contraseña | texto |
Desde que agregamos la columna a simple_users
, PostgreSQL se asegura de que esta columna no se simple_users
.
Ahora, si tuviéramos otra tabla secundaria, su columna de password
, por supuesto, se habría eliminado.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow