繁体   English   中英

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

[英]Add column automatically when the base table changes in PostgreSQL

我正在使用Postgres。

table1列: idname

table2_hist列: idname

如果我在table1增加一个列salary (仅该列,没有数据),是否有可能将该列也添加到table2

这样,我有多个表要添加列。 是否有任何脚本?

在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的解决方案。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM