我正在使用Postgres。
table1
专栏:id
,name
table2_hist
专栏:id
,name
如果我在salary
中添加一个列table1
(只有列,没有数据),是否可以将该列添加到table2
?
像这样,我有多个表来添加列。这有什么脚本吗?
在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的解决方案。
我认为在数据库中自动尝试这样做是错误的。您应该找到一些其他方法来确保在没有相应修改历史记录表的情况下不修改表。