![](/img/trans.png)
[英]Is it possible to add a postgresql trigger to notify my Django app when a table changes?
[英]Add column automatically when the base table changes in PostgreSQL
我正在使用Postgres。
table1
列: id
, name
table2_hist
列: id
, name
如果我在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.