ADD ARRAY 子句

ARRAY 类型的安全标签组件是超过 64 个元素的有序集合。声明数组元素的顺序很重要,因为它定义了数据敏感性的降序,每个连续的元素在数据敏感性上都低于前面的元素。数组的标签元素集及其逗号( , )分隔符必须放在一对括号( [ ... ])内。相同的新元素不能在同一 ADD ARRAY 子句中声明多次。

在 ADD ARRAY 子句中,BEFORE 或 AFTER 关键字必须跟随在新元件(或以逗号分隔的新元件的列表)之后按数据敏感度降序指定新元件的位置。在对元素大小和数量的限制中,此语法使 DBSECADM 能够在数组中任何位置(包括最高位置和最低位置)或在连续的现有元素之间插入新元素。然而,如果 ADD ARRAY 子句的 BEFORE 或 AFTER 关键字指定了之前未定义的数组元素(无论是在创建数组组件时,还是在先前的 ALTER SECURITY LABEL COMPONENT 语句中),ALTER SECURITY LABEL COMPONENT 语句都会失败并显示错误。

如果在同一个 ARRAY 类型的构件中执行了多个 ALTER SECURITY LABEL COMPONENT 操作以添加新元件, 由于数组元件的编码方式,DBSECADM 可能无法到达 64 组元件的最大值。有关安全元件是如何编码的信息,请参阅 GBase 8s 安全指南

以下示例定义了一个 ARRAY 类型的安全标签构件 aquilae ,它是五个元件的顺序集, imperator 在数据敏感度中是最高的,最低的是 asinus 。随后的 ALTER SECURITY LABEL COMPONENT 语句添加了两个新元件:
CREATE SECURITY LABEL COMPONENT aquilae  
          ARRAY [ "imperator", "tribunus", "centurio", "miles", "asinus" ];
          
          ALTER SECURITY LABEL COMPONENT aquilae  
          ADD ARRAY [ "legatus" BEFORE "tribunus","cunctator" AFTER "asinus" ];
        
该 ALTER SECURITY LABEL COMPONENT ... ADD ARRAY 语句的成功运行修改了 aquilae 安全标签构件组,因此构件元件新的降序顺序为:imperator 、legatus 、tribunus 、centurio 、miles 、asinus 、cunctator