例如,我有表T1和存档表T1_A
Create table T1(n number); Create table T1_A(archieve_dt date,n number);
如果要在T1中添加一列,要使激活正常工作,我需要在T1_A中添加同一列。
有什么电话吗?
Alter table T1_A add n1 number;
如果我打电话给这个
Alter table T1 add n1 number;
找不到有关此类触发器的任何信息。
概括地说,如果您需要执行此操作,则数据模型将损坏。仅仅因为一个表获得了一个新列,没有理由让其他表自动获得相同的新列。
将DDL应用于表应该是明智的人为判断问题,并且应以受控方式执行,理想情况下,脚本不受源代码控制。使数据库中的触发器产生列将是一个噩梦(即使有可能,也有可能)。对于缺乏对生产中架构更改的控制权,大多数经理会非常担心。
显然,这里您似乎在归档方面有特殊情况,但实际上适用相同的原理。考虑如果要从T1中删除一列怎么办?您是否还要从存档表中删除该列?也许吧,也许不是。同样,如果更改是为了修改数据类型。在这两种情况下,您都需要做出有关如何将更改应用于存档表的体系结构决策。
然后,当然还有如何用新列填充存档表的问题。大概有一个触发器。好了,触发器将不得不更改,虽然从数据字典生成触发器主体是很常见的,但它仍然不是您希望自动发生的事情。
如果您需要将同一列添加到多个表中,则只需编写多个ALTER TABLE语句即可。如果有太多需要手工编写的内容-并且您不认为这是一个危险的信号-那么您可以使用带有查询的语句来生成语句,该查询会导致数据字典无法使用。