删除列时重新创建触发器的规则

2020-09-12 03:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果我有一个带有触发器的表,并且在该表上放了一列,则会收到警告消息:

警告:表" mytable"的架构已更改。  
在该表上使用'if update(column-name)子句删除并重新创建每个触发器。

第一个问题,警告中的"列名"是否仅指我删除的列?

此外,在文档中:

SAP ASE->参考->命令->更改表-> 更改表架构

它说:

"为确保触发器正确触发,请在执行添加,删除,修改或锁定操作后删除并重新创建已更改表上的所有触发器"

拖放并重新创建 * all * 触发器,即使它们未引用修改后的列也是如此? 是真的吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果我有一个带有触发器的表,并且在该表上放了一列,则会收到警告消息:

警告:表" mytable"的架构已更改。  
在该表上使用'if update(column-name)子句删除并重新创建每个触发器。

第一个问题,警告中的"列名"是否仅指我删除的列?

此外,在文档中:

SAP ASE->参考->命令->更改表-> 更改表架构

它说:

"为确保触发器正确触发,请在执行添加,删除,修改或锁定操作后删除并重新创建已更改表上的所有触发器"

拖放并重新创建 * all * 触发器,即使它们未引用修改后的列也是如此? 是真的吗?

付费偷看设置
发送
2条回答
木偶小白
1楼-- · 2020-09-12 04:52

我的猜测是,有两个特殊的表"插入"和"删除",它们需要在alter table之后获得新的列列表。

因此,即使您没有在

记住,ASE在存储过程中转换" select * from table-name"以按列选择所有列,请记住ASE编译后的代码可能不反映新的列集。 -name

-避免以后捕获丢失的添加列,并且

-捕获丢失的列(如果有)。

HTH

Avinash

还请注意ASE 16触发器REPLACE问题,该问题是由具有sa角色的非sa登录创建的。

我们发现drop + create可以正常工作。

梦想连接
2楼-- · 2020-09-12 04:38

您好,

这是使用" if update()"的触发器的示例代码

创建表tt(c1 int null,c2 int null,c3 varchar(6)null,c4 varchar( 6)null)
go
在tt上创建触发器tx,以进行更新,如果update(c2)开始更新tt,则设置c3 =" change" end
go
插入tt值(1, 1," new"," new")
转到
更新tt set c2 = 2
转到

一周热门 更多>