当基础表在PostgreSQL中更改时自动添加列

时间:2019-02-13 07:14:08

标签: python mysql postgresql postgresql-9.1 postgresql-9.3

我正在使用Postgres。

table1列:idname

table2_hist列:idname

如果我在salary中再添加一列table1(仅该列,没有数据),是否可以将该列也添加到table2中?

像这样,我有多个表要添加列。有这个脚本吗?

1 个答案:

答案 0 :(得分:0)

在PostgreSQL中,一种方法是使用由ALTER TABLE触发的event trigger。在用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的解决方案。

我认为尝试在数据库中自动执行操作是错误的。您应该找到其他方法来确保没有对历史表进行相应的修改就不会修改任何表。