我正在使用Postgres。
table1
列:id
,name
table2_hist
列:id
,name
如果我在salary
中再添加一列table1
(仅该列,没有数据),是否可以将该列也添加到table2
中?
像这样,我有多个表要添加列。有这个脚本吗?
答案 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的解决方案。
我认为尝试在数据库中自动执行操作是错误的。您应该找到其他方法来确保没有对历史表进行相应的修改就不会修改任何表。