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