ALTER TRIGGER 语句(基本触发器)

更改开始ALTER TRIGGER(基本)语句用于更改当前服务器上基本触发器的描述。更改结束

FL 500 有关基本触发器和高级触发器的区别,请参阅触发器

调用ALTER TRIGGER(基本)

更改开始此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL更改结束

ALTER TRIGGER(基本)授权

以下定义的特权套装必须至少包含以下一项:

  • 扳机所有权
  • 架构上的ALTERIN权限
  • SYSADM 权限
  • SYSCTRL 权限
  • 系统 DBADM
  • 更改开始安装 SYSOPR 权限(当前进程的 SQLID 设置为 SYSINSTL 时)更改结束

与模式名称匹配的授权ID隐式拥有该模式的ALTERIN权限。

权限设置:

如果语句嵌入到应用程序中,权限集就是计划或软件包所有者所拥有的权限集。 如果语句是动态准备的,则权限集是指由进程的 SQL 授权 ID 持有的权限集。 指定的触发器名称可以包含模式名称(限定符)。 但是,如果架构名称与进程的授权ID之一不匹配,则必须满足以下条件之一:

  • 特权集包括SYSADM权限、SYSCTRL权限或系统DBADM权限。
  • 该过程的授权ID具有对架构的ALTERIN权限。
如果指定了SECURED选项,则至少需要以下一项权限:
  • SECADM 权限
  • CREATE_SECURE_OBJECT权限
备注 :如果将“单独安全”子系统参数设置为“否”,则系统管理员权限具有隐含的SECADM权限。
更改开始

ALTER TRIGGER的语法(基本)

阅读语法图跳过可视化语法图ALTER TRIGGER触发器名称option-list

选项列表:

阅读语法图跳过可视化语法图 NOT SECUREDSECURED
更改结束

ALTER TRIGGER(基本)描述

触发器名称
识别需要更改的触发器。 更改开始该名称(包括隐式或显式模式名称)必须存在于当前服务器中。 名称必须确定一个基本触发器。更改结束

更改开始触发器不得混淆。更改结束

SECURED 或者 NOT SECURED
指定触发器是否更改为安全或不安全。 在“安全”和“不安全”之间切换触发器会导致触发器包的隐式重新绑定。 如果在触发器包的隐式重新绑定过程中遇到错误,ALTER TRIGGER语句将返回错误。
SECURED
指定触发器被视为安全触发器。

如果触发器的目标表使用行访问控制或列访问控制,则必须指定SECURED。 如果为视图创建的触发器,且视图定义中一个或多个基础表使用行访问控制或列访问控制,则还必须指定SECURED。

NOT SECURED
指定触发器被认为不安全。

对于使用行访问控制或列访问控制的触发器,不能指定NOT SECURED。 如果视图定义中有一个或多个基础表使用行访问控制或列访问控制,则不能为该视图创建的触发器指定NOT SECURED。

ALTER TRIGGER(基本)的注意事项

更改开始将现有触发器改为高级触发器:更改结束
更改开始FL 500 要将基本触发器或 Db2 12 之前定义的触发器(已激活新功能)更改为高级触发器,请使用下列方法之一:
  • 发出DROP TRIGGER语句,然后发出CREATE TRIGGER(高级)语句,指定高级触发器的所需定义,以对其进行重新定义。 现有的触发器被有效放弃,新的高级触发器被定义。 这会影响触发器定义表中的触发器激活顺序。
  • 使用OR REPLACE子句发出CREATE TRIGGER(高级)语句,并指定高级触发器的所需定义。 现有的触发器被有效放弃,新的高级触发器被定义。 这会影响触发器定义表中的触发器激活顺序。
更改结束
更改开始变化是立竿见影的:更改结束
更改开始ALTER TRIGGER 语句对触发器定义的任何修改都会立即生效。 下一次激活触发器时,将使用更改后的定义。更改结束
将触发器从“未锁定”改为“已锁定”:
通常,安全管理员会检查触发器访问的数据,确保其安全,并向触发器所有者授予CREATE_SECURE_OBJECT权限。 将触发器更改为“SECURED”后,安全管理员将撤销触发器所有者对“CREATE_SECURE_OBJECT”的权限。

在执行ALTER TRIGGER语句后,触发器被视为安全。 Db2 将SECURED属性视为一个断言,声明用户已为触发器主体中的所有活动建立了审计程序。 如果安全触发器引用了用户定义的函数,则 Db2 会认为这些函数无需验证即可安全使用。 如果这些功能可以访问敏感数据,那么拥有SECADM权限的用户需要确保这些功能被允许访问这些数据,并且这些功能的所有版本都经过审计,而且所有后续的ALTER FUNCTION语句或对外部包的更改都经过审计流程的审查。

如果触发器的目标表使用行访问控制或列访问控制,则触发器必须安全。 如果为视图创建的触发器,且视图定义中一个或多个基础表使用行访问控制或列访问控制,则还必须指定SECURED。

将触发器从“安全”改为“不安全”:
如果触发器的目标表使用行访问控制或列访问控制,或者触发器用于视图,且视图定义中的一个或多个基础表使用行访问控制或列访问控制,则ALTER TRIGGER语句将返回错误。
更改开始更改混淆触发器:更改结束
更改开始混淆触发器不能以任何方式更改。更改结束
行访问控制和列访问控制不适用于过渡变量和过渡表:
如果对触发器的目标表实施了行访问控制或列访问控制,则行权限和列掩码不适用于转换变量和转换表的初始值。 触发表的行访问控制和列访问控制是强制性的,但对于在触发器主体中引用的过渡变量和过渡表,或者作为参数传递给在触发器主体中调用的用户定义函数,则忽略这些变量和表。 为了确保在触发器操作中访问过渡变量和过渡表中的敏感数据的SQL语句不存在安全问题,必须更改触发器以使用SECURED选项。 如果触发器不安全,则无法对触发表实施行访问控制和列访问控制。

ALTER TRIGGER(基本)示例

示例1: 将触发器 TRIGGER1 的定义更改为“安全”:

ALTER TRIGGER TRIGGER1
 SECURED;