postgresql
наследование
Поиск…
замечания
Объяснение того, почему вы хотите использовать наследование в PostgreSQL, можно найти здесь: http://stackoverflow.com/a/3075248/653378
Создание таблиц для детей
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
CREATE TABLE users_with_password (password text) INHERITS (users);
Наши три таблицы выглядят так:
пользователи
колонка | Тип |
---|---|
имя пользователя | текст |
Эл. адрес | текст |
simple_users
колонка | Тип |
---|---|
имя пользователя | текст |
Эл. адрес | текст |
users_with_password
колонка | Тип |
---|---|
имя пользователя | текст |
Эл. адрес | текст |
пароль | текст |
Изменение таблиц
Давайте создадим две простые таблицы:
CREATE TABLE users (username text, email text);
CREATE TABLE simple_users () INHERITS (users);
Добавление столбцов
ALTER TABLE simple_users ADD COLUMN password text;
simple_users
колонка | Тип |
---|---|
имя пользователя | текст |
Эл. адрес | текст |
пароль | текст |
Добавление одного и того же столбца в родительскую таблицу объединит определение обоих столбцов:
ALTER TABLE users ADD COLUMN password text;
УВЕДОМЛЕНИЕ: слияние определения столбца «пароль» для дочерних «simple_users»
Удаление столбцов
Используя наши измененные таблицы:
ALTER TABLE users DROP COLUMN password;
пользователи
колонка | Тип |
---|---|
имя пользователя | текст |
Эл. адрес | текст |
simple_users
колонка | Тип |
---|---|
имя пользователя | текст |
Эл. адрес | текст |
пароль | текст |
Поскольку мы сначала добавили столбец в simple_users
, PostgreSQL гарантирует, что этот столбец не будет simple_users
.
Теперь, если бы у нас был другой дочерний стол, его password
столбец, конечно, был бы удален.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow