Добавление столбца автоматически при изменении базовой таблицы в PostgreSQL - PullRequest
0 голосов
/ 13 февраля 2019

Я использую Postgres.

table1 столбцы: id, name

table2_hist столбцы: id, name

Если я добавлю еще один столбец salary в table1 (только столбец, без данных), возможно ли добавить этот столбец в table2?

Таким образом, у меня есть несколько таблиц для добавлениястолбцы в.Есть ли сценарий для этого?

1 Ответ

0 голосов
/ 13 февраля 2019

В PostgreSQL одним из способов было бы использование триггера событий , который запускается ALTER TABLE.В триггере событий, написанном на C, вы можете проанализировать дерево синтаксического анализа и принять соответствующие меры.

Но это кажется громоздким путем.

Еще одна идея в PostgreSQL - использование наследования.Поскольку таблицы имеют одинаковые столбцы, один может наследоваться от другого:

CREATE TABLE table1 (id integer PRIMARY KEY, name text);

CREATE TABLE table2 () INHERITS (table1);

\d table2
              Table "laurenz.table2"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 id     | integer |           | not null | 
 name   | text    |           |          | 
Inherits: table1

ALTER TABLE table1 ADD newcol bytea;

\d table2
              Table "laurenz.table2"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 id     | integer |           | not null | 
 name   | text    |           |          | 
 newcol | bytea   |           |          | 
Inherits: table1

Но я не думаю, что вы можете найти решение, которое будет работать как для MySQL, так и для PostgreSQL.

Я считаю ошибкой пытаться сделать это автоматически в базе данных.Вы должны найти другой способ убедиться, что ни одна таблица не была изменена без соответствующей модификации таблицы истории.

...