ALTER MASK 语句
ALTER MASK 语句用于更改当前服务器上存在的列掩码。
调用 ALTER MASK
此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL。
授权 ALTER MASK
以下定义的特权集必须包含以下权限:
- SECADM 权限
权限设置:
如果语句嵌入到应用程序中,权限集就是软件包所有者所拥有的权限。 如果语句是动态准备的,则权限集是进程的每个授权ID和角色所拥有的权限集的并集。
语法 ALTER MASK
描述 ALTER MASK
- 假名
- 标识要更改的列掩码。 名称必须标识当前服务器上存在的一个掩码。
- ENABLE
- 指定启用列掩码以进行列访问控制。 如果当前未为表格启用列访问控制,则当为表格启用列访问控制时,列掩码将生效。 如果当前已为表激活列访问控制,则列掩码立即生效,引用该表的动态缓存语句将失效。
使用该子句或关键字可能会使依赖于目标对象的软件包或通过级联效应依赖于相关对象的软件包失效。 请参阅使软件包失效的更改。
无法启用带有再生错误的列掩码。 要清除列掩码的状态,必须删除列掩码,然后使用修改后的定义重新创建。
如果列掩码已定义为启用列访问控制,则忽略启用。
- DISABLE
- 指定在列访问控制中禁用列掩码。 如果当前未为表启用列访问控制,则在为表启用列访问控制时,列掩码将保持无效。 如果当前已为表激活列访问控制,则列掩码立即失效,所有引用该表的动态缓存语句也将失效。
使用该子句或关键字可能会使依赖于目标对象的软件包或通过级联效应依赖于相关对象的软件包失效。 请参阅使软件包失效的更改。
如果列掩码已定义为禁用列访问控制,则禁用将被忽略。
- REGENERATE
- 指定重新生成列掩码。 目录中的列掩码定义将被使用,任何现有的依赖关系和授权都将保留。 重新评估列掩码的定义,就像创建列掩码一样。 列掩码定义中引用的用户定义函数必须与列掩码创建过程中解析的函数解析为相同的安全用户定义函数。
一般来说,REGENERATE 关键字仅用于特定情况,如例程或对象的隐式再生失败,或 Db2 维护要求对对象或例程进行再生。 有关详细信息,请参阅何时重新生成 Db2 数据库对象和例程。
USING APPLICATION COMPATIBILITY 应用兼容级
FL 500 规定对象将根据 applcompat 级别的应用程序兼容性规则重新生成。 如果ALTER语句包含任何需要更高应用程序兼容性的语法、语义或选项,则该语句将失败。如果省略了“应用程序兼容性”选项,则再生将使用适用 SYSIBM.SYSENVIRONMENT 目录表行的APPLCOMPAT值。
可以指定以下应用兼容级别值:
V12R1M5nn

与已识别的 Db2 12 功能级别的行为兼容。 例如,
V12R1M510指定与最高可用 Db2 12 功能级别兼容。 必须激活同等或更高的功能级别。
有关每个应用程序兼容性级别中可用的新功能的信息,请参阅 V12R1Mnnn 应用程序兼容性级别。
提示:
对于使用数据服务器客户端或驱动程序访问 Db2 for z/OS® 的应用程序,可能需要额外的程序准备步骤来提高应用程序兼容性级别。 有关详细信息,请参阅为数据服务器客户端和驱动程序设置应用程序兼容性级别。

V12R1
与 Db2 12 功能 500 级的行为兼容。 该值与指定 V12R1M500的结果相同。
- V11R1
- 与 Db2 11 新功能模式的行为兼容。 迁移到 Db2 12 后,此值与指定
V12R1M100具有相同的结果。 欲了解更多信息,请访问 V11R1 应用程序兼容性级别 - V10R1
- 与 DB2® 10 新功能模式的行为兼容。 更多信息,请参阅 V10R1 应用程序兼容性级别。

备注 ALTER MASK
- 应用 Db2 维护:
- 当应用 Db2 维护时,如果影响列掩码的生成方式,则可能需要重新生成列掩码,以确保列掩码仍然有效。
如果列掩码成功再生,则列掩码的状态在目录表中设置为空白。 如果列掩码已启用,且当前已激活表的列访问控制,则引用该表的动态缓存语句均无效。
如果无法成功重新生成列掩码,则会返回错误。 列掩码的再生状态是错误的。 如果列掩码已启用,且当前已激活表的列访问控制,则引用该表的所有包和动态缓存语句均标记为无效。 要清除列掩码的状态,必须删除列掩码,然后使用修改后的定义重新创建。 如果尚未禁用,则可以禁用列掩码。 对于强制执行的访问控制表,无效的列掩码对列访问控制无效。
当数据操作语句中引用表时,如果任何已启用的列掩码存在重新生成错误,则语句将返回错误。
- 包裹失效:
- 根据指定的条款和关键字以及其他因素,此语句可能会使所有依赖于目标对象(有时是其他相关对象)的包失效。 更多信息,请参阅 “导致套餐失效的变更 ”。
例子 ALTER MASK
- 示例 1:
- 启用列掩码 M1。
ALTER MASK M1 ENABLE; - 示例 2:
- 更新列掩码 M1。
ALTER MASK M1 REGENERATE; COMMIT;
