【发布时间】:2021-04-14 05:24:06
【问题描述】:
在我的数据库中,我有一个包含很多列的大表,其中每一行代表一个数据集。 (“表1”)
我创建了第二个表(“Table2”),它用作 Table1 的元数据表。除了添加了主键之外,所有列都是相同的。
主要区别在于该表中的每一行都代表一个视图,其中包含 Table1 的所有列的元数据
小例子:
Table1
Column1 Column2 Column3
1 True "Foo"
2 False "Bar"
3 False "Baz"
Table2
View_name Column1 Column2 Column3
"admin" "show" "show" "show"
"sales" "show" "hide" null
"default" "hide" "show" "hide"
我现在正在寻找一种在 Table1 更改时自动更新 Table2 的方法。所以:
- 如果 Table1 添加了
Column4,则将Column4添加到 Table2(视图的值可以是null)。 - 如果 Table1 删除了
Column3,请从 Table2 中删除Column3。 - 如果 Table1 将
Column2的名称更改为Col2,则将 Table2 中的Column2s 名称更改为Col2
当然,同时不会为所有这些操作覆盖表 2 中的任何现有值。
我希望编写某种TRIGGER 函数,但作为替代方案,我不介意运行不时执行此操作的查询。我只是不想手动管理这些更改。
有什么办法吗?
【问题讨论】:
-
删除是什么意思?您可以删除列或删除列中的值。 mysql也不支持ddl触发器,所以ALTERing a table to add a column不能触发触发器,
-
我的意思是删除一列。抱歉,我对 SQL 还很陌生,正在尝试掌握行话
-
简单回答不,你不能自动化。