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

问题描述 投票:0回答:1

我正在使用Postgres。

table1专栏:idname

table2_hist专栏:idname

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

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

python mysql postgresql postgresql-9.1 postgresql-9.3
1个回答
0
投票

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

我认为在数据库中自动尝试这样做是错误的。您应该找到一些其他方法来确保在没有相应修改历史记录表的情况下不修改表。

© www.soinside.com 2019 - 2024. All rights reserved.