DROP 语句

DROP 语句将删除对象。 任何直接或间接依赖于该对象的对象都被删除或者变得不可操作。 无论何时删除对象,其描述都将从目录中删除,并且引用该对象的任何包都将失效。

调用

此语句可以嵌入在应用程序中,也可通过动态 SQL 语句来发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

授权

当删除允许两部分名称的对象时,该语句的授权标识所拥有的特权必须至少包含下列其中一个权限:
  • 对该对象的模式的 DROPIN 特权
  • 对象的所有者(记录在该对象的目录视图的 OWNER 列中)
  • 对该对象的 CONTROL 特权(仅适用于索引、索引规范、昵称、程序包、表和视图)
  • 用户定义的类型的所有者(记录在 SYSCAT.DATATYPES 目录视图的 OWNER 列中)(仅当删除与用户定义的类型相关联的方法时适用)
  • 对对象的模式的 SCHEMAADM 权限
  • DBADM 权限

当删除表或视图层次结构时,该语句的授权标识所拥有的特权必须包括该层次结构中每个表或视图的其中一个先前提及的特权。

当删除审计策略时,该语句的授权标识所拥有的特权必须包括 SECADM 权限。

当删除缓冲池、数据库分区组、存储器组或表空间时,该语句的授权标识所拥有的特权必须包括 SYSADM 或 SYSCTRL 权限。

删除数据类型映射、函数映射、服务器定义或包装器时,该语句的授权标识所拥有的特权必须包含 DBADM 权限。

在删除事件监视器时,该语句的授权标识所拥有的特权必须包括 SQLADM 或 DBADM 权限。

当删除角色时,该语句的授权标识所拥有的特权必须包括 SECADM 权限。

当删除行许可权或列掩码时,该语句的授权标识所拥有的特权必须包括 SECADM 权限。

删除模式时,语句的授权标识所拥有的特权必须包含 DBADM 权限,或者必须是模式所有者,如 SYSCAT.SCHEMATA 目录视图的 OWNER 列中所记录的那样。

当删除安全标号,安全标号组件或安全策略时,该语句的授权标识所拥有的特权必须包括 SECADM 权限。

删除服务类,工作操作集,工作类集,工作负载,阈值或直方图模板时,该语句的授权标识所拥有的特权必须包含 WLMADM 或 DBADM 权限。

删除系统时间段时态表时,该语句的授权标识所拥有的特权还必须至少包含下列其中一项权限:
  • 删除关联历史记录表的特权
  • 管理权限

删除变换时,该语句的授权标识所拥有的特权必须包含 DBADM 权限,或者必须是 type-name 的所有者。

当删除可信上下文时,该语句的授权标识所拥有的特权必须包括 SECADM 权限。

当删除事件监视器或用法列表时,该语句的授权标识所拥有的特权必须包括 SQLADM 或 DBADM 权限。

在删除用户映射时,如果此授权标识与该映射中的联合数据库授权名称不同,那么该语句的授权标识所拥有的特权必须包含 DBADM 权限。 否则,如果授权标识和授权名称匹配,那么不需要任何权限或特权。

语法

Read syntax diagramSkip visual syntax diagramDROPalias-designatorAUDIT POLICYpolicy-nameBUFFERPOOLbufferpool-nameDATABASE PARTITION GROUPdb-partition-group-nameEVENT MONITORevent-monitor-namefunction-designatorRESTRICTFUNCTION MAPPINGfunction-mapping-nameHISTOGRAM TEMPLATEtemplate-nameINDEXindex-name1INDEX EXTENSIONindex-extension-nameRESTRICTMASKmask-namemethod-designatorRESTRICTMODULEmodule-nameNICKNAMEnicknamePACKAGEpackage-nameVERSIONversion-idPERMISSIONpermission-nameprocedure-designatorRESTRICTROLErole-nameSCHEMAschema-nameRESTRICTSECURITY LABELsecurity-label-nameRESTRICTSECURITY LABEL COMPONENTsec-label-comp-nameRESTRICTSECURITY POLICYsecurity-policy-nameRESTRICTSEQUENCEsequence-nameRESTRICTSERVERserver-nameservice-class-designatorRESTRICTSTOGROUPstoragegroup-nameRESTRICTTABLEIF EXISTStable-name2TABLE HIERARCHYroot-table-nameTABLESPACETABLESPACES,tablespace-nameTRANSFORMTRANSFORMSALLgroup-nameFORtype-nameTHRESHOLDthreshold-nameTRIGGERtrigger-nameTRUSTED CONTEXTcontext-nameTYPEtype-nameRESTRICTTYPE MAPPINGtype-mapping-nameUSAGE LISTusage-list-nameUSER MAPPING FORauthorization-nameUSERSERVERserver-nameVARIABLEvariable-nameRESTRICTVIEWview-nameVIEW HIERARCHYroot-view-nameWORK ACTION SETwork-action-set-nameWORK CLASS SETwork-class-set-nameWORKLOADworkload-nameWRAPPERwrapper-nameXSROBJECTxsrobject-name
alias-designator
Read syntax diagramSkip visual syntax diagram PUBLICALIASalias-name FOR TABLEFOR MODULEFOR SEQUENCE
function-designator
Read syntax diagramSkip visual syntax diagramFUNCTIONfunction-name(,data-type)SPECIFIC FUNCTIONspecific-name
method-designator
Read syntax diagramSkip visual syntax diagramMETHODmethod-name(,data-type)FORtype-nameSPECIFIC METHODspecific-name
procedure-designator
Read syntax diagramSkip visual syntax diagramPROCEDUREprocedure-name(,data-type)SPECIFIC PROCEDUREspecific-name
service-class-designator
Read syntax diagramSkip visual syntax diagramSERVICE CLASSservice-class-name UNDERservice-superclass-name
Notes:
  • 1 Index-name can be the name of either an index or an index specification.
  • 2 For compatibility with Netezza, you can change the order of IF EXISTS and table-name.

描述

alias-designator
ALIAS alias-name
识别要删除的别名。 alias-name 必须标识该目录中描述的别名 (SQLSTATE 42704)。 已删除指定的别名。
FOR TABLE、FOR MODULE 或 FOR SEQUENCE
指定该别名的对象类型。
FOR TABLE
别名是表、视图或昵称的别名。
FOR MODULE
别名是模块的别名。
FOR SEQUENCE
别名是序列的别名。

所有引用该别名的视图和触发器都将变得不可用。 这包括在 CREATE TRIGGER 语句的 ON 子句中以及在触发 SQL 语句中的别名引用。 将删除引用该别名的任何具体化查询表或登台表。

如果指定了 PUBLIC,那么 alias-name 必须标识存在于当前服务器上的公用别名 (SQLSTATE 428EK) (SQLSTATE 42704)。

如果在行许可权或列掩码的定义中引用该别名,那么无法删除该别名 (SQLSTATE 42893)。

AUDIT POLICY POLICY-name
标识要丢弃的审计策略。 policy-name 必须识别存在于当前服务器上的审计策略 (SQLSTATE 42704)。 此审计策略不得与任何数据库对象关联 (SQLSTATE 42893)。 指定的审计策略已从目录中删除。
BUFFERPOOL bufferpool-name
标识要丢弃的缓冲池。 bufferpool-name 必须标识该目录中描述的缓冲池 (SQLSTATE 42704)。 不能将任何表空间分配给缓冲池 (SQLSTATE 42893)。 无法删除 IBMDEFAULTPP 缓冲池 (SQLSTATE 42832)。 立即释放缓冲池内存。
DATABASE PARTITION GROUP db-PARTITION-GROUP-name
标识将要删除的数据库分区组。 db-partition-group-name 参数必须标识在目录中所描述的数据库分区组 (SQLSTATE 42704)。 这是一部分名称。

删除数据库分区组将删除数据库分区组中定义的所有表空间。 所有对表空间中的表具有依赖性的现有数据库对象(例如,程序包和引用约束等)都将被删除或失效(根据情况),并且从属视图和触发器将变得不可用。

无法删除 IBMCATGROUP、IBMDEFAULTGROUP 和 IBMTEMPGROUP 数据库分区组 (SQLSTATE 42832)。

如果对当前正在进行数据重新分发的数据库分区组发出 DROP DATABASE PARTITION GROUP 语句,那么删除数据库分区组操作将失败,并且会返回错误 (SQLSTATE 55038)。 但是,可以删除部分重新分发的数据库分区组。 如果 REDISTRIBUTE DATABASE PARTITION GROUP 命令未执行到完成,那么数据库分区组可能会部分重新分发。 如果它被错误或 FORCE APPLICATION ALL 命令中断,那么可能会发生这种情况。 (对于部分重新分发的数据库分区组,SYSCAT.DBPARTITIONGROUPS 目录中的 REDISTRIBUTE_PMAP_ID 不是 -1。)

EVENT MONITOR EVENT-MONITOR-name
标识要丢弃的事件监视器。 event-monitor-name 必须识别在目录中描述的事件监视器 (SQLSTATE 42704)。

如果标识的事件监视器处于活动状态,那么会返回错误 (SQLSTATE 55034);否则,会删除事件监视器。 请注意,如果事件监视器先前已使用 SET EVENT MONITOR STATE 语句激活,并且数据库已取消激活并随后重新激活,那么在发出 DROP 语句之前,请使用 SET EVENT MONITOR STATE 语句来取消激活事件监视器。

如果在正在删除的 WRITE TO FILE 事件监视器的目标路径中存在事件文件,那么不会删除这些事件文件。 但是,如果创建了指定同一目标路径的新事件监视器,那么会删除事件文件。

当删除 WRITE TO TABLE 事件监视器时,将从 SYSCAT.EVENTTABLES 目录视图中除去表信息,但不会删除这些表本身。

功能代号
标识要删除的用户定义的函数(完整函数或函数模板)的实例。 有关更多信息,请参阅 函数,方法和过程指示符
指定的函数实例必须是目录中描述的用户定义的函数。 无法删除下列函数:
  • 由 CREATE TYPE 语句隐式生成的函数 (SQLSTATE 42917)
  • SYSIBM、SYSFUN、SYSIBMADM 或 SYSPROC 模式中的一个函数 (SQLSTATE 42832)
  • 在行许可权或列掩码的定义中引用的函数 (SQLSTATE 42893)
  • 在已生成的列表达式或检查约束中引用的函数 (SQLSTATE 42893)
RESTRICT
如果存在以下任何依赖关系,那么 RESTRICT 关键字强制实施不删除该函数的规则:
  • 另一个函数源自该函数。
  • 另一个例程使用该函数。
  • 视图使用该函数。
  • 触发器使用该函数。
  • 具体化查询表在其定义中使用该函数。
缺省情况下,如果将 auto_reval 数据库配置参数设置为 disabled ,那么将对与 V 9.5 中相同的依赖关系实施限制规则。
在此情况下,以下注意事项适用:
  • 其他对象可依赖于某个函数。 必须先除去所有此类依赖关系,然后才能删除该函数,但标记为不可用的包除外。 如果尝试删除具有此类依赖关系的函数,那么将导致错误 (SQLSTATE 42893)。 请参阅规则部分以获取这些依赖关系的列表。 如果可以删除该功能,那么将删除该功能。
  • 任何依赖于要删除的特定功能的包都标记为不可操作。 这样的包并不是隐式地重新绑定的。 必须通过使用 BIND 或 REBIND 命令来重新绑定,或者必须通过使用 PREP 命令来重新准备。
FUNCTION MAPPING FUNCTION-MAPPING-name
标识要删除的功能映射。 function-mapping-name 必须标识在目录中描述的用户定义的函数映射 (SQLSTATE 42704)。 将从数据库中删除函数映射。

无法删除缺省函数映射,但可以通过使用 CREATE FUNCTION MAPPING 语句将其禁用 。 删除为覆盖缺省函数映射而创建的用户定义的函数映射会恢复缺省函数映射。

对已删除的函数映射具有依赖关系的包将失效。

HISTOGRAM TEMPLATE TEMPLATE-name
标识要丢弃的直方图模板。 template-name 必须标识当前服务器上存在的直方图模板 (SQLSTATE 42704)。 template-name 不能为 SYSDEFAULTHISTOGRAM (SQLSTATE 42832)。 如果服务类或工作操作依赖于该服务类或工作操作,那么无法删除直方图模板 (SQLSTATE 42893)。 指定的直方图模板将从目录中删除。
INDEX index-name
标识要删除的索引或索引指定项。 index-name 必须标识该目录中描述的索引或索引规范 (SQLSTATE 42704)。 对于复制的具体化查询表或者对于 XML 列,它不能是系统需要的主键或唯一约束的索引 (SQLSTATE 42917)。 删除指定的索引或索引规范。

可以删除修改状态索引(也称为修改状态索引),即使它们被分类为系统索引也是如此。 为了便于回滚到较早的修订包级别,支持删除修改状态索引。 如果在删除表上的最后一个用户索引时存在修改状态索引,那么将隐式删除修改状态索引。

对已删除的索引或索引规范具有依赖关系的程序包将失效。

INDEX EXTENSION index-extension-name RESTRICT
标识要丢弃的索引扩展。 index-extension-name 必须识别在目录中描述的索引扩展 (SQLSTATE 42704)。 RESTRICT 关键字强制实施以下规则:无法定义任何依赖于此索引扩展定义的索引 (SQLSTATE 42893)。
MASK mask-name
标识要删除的列掩码。 该名称必须标识存在于当前服务器上的列掩码 (SQLSTATE 42704)。
方法代号
标识要删除的方法主体。 有关更多信息,请参阅 函数,方法和过程指示符。 指定的方法主体必须是目录中描述的方法 (SQLSTATE 42704)。 不能删除由 CREATE TYPE 语句隐式生成的方法体。

DROP METHOD 删除方法的主体,但方法规范(特征符)仍作为主题类型的定义的一部分保留。 在删除方法的主体之后,可以通过 ALTER TYPE DROP METHOD 从主题类型定义中除去方法规范。

RESTRICT
如果存在以下任何依赖关系,那么 RESTRICT 关键字将强制实施不删除该方法的规则:
  • 函数在方法上寻源。
  • 另一个例程使用该方法。
  • 视图使用该方法。
  • 触发器使用此方法。
  • 具体化查询表在其定义中使用该方法。
缺省情况下,如果将 auto_reval 数据库配置参数设置为 disabled ,那么将对与 V 9.5 中相同的依赖关系实施限制规则。
在此情况下,以下注意事项适用:
  • 其他对象可能依赖于某个方法。 必须先除去所有此类依赖关系,然后才能删除该方法,但删除成功时将被标记为不可操作的包除外。 如果尝试删除具有此类依赖关系的方法,那么将导致错误 (SQLSTATE 42893)。 如果可以删除该方法,那么将删除该方法。
  • 依赖于要删除的特定方法的任何包都标记为不可操作。 不会隐式地重新绑定这样的包。 它必须通过使用 BIND 或 REBIND 命令来重新绑定,或者必须通过使用 PREP 命令来重新准备。

如果被删除的特定方法覆盖另一个方法,那么依赖于被覆盖方法的所有包以及在被删除的特定方法的超类型中覆盖此方法的方法都将失效。

MODULE module-name
用于标识要删除的模块。 module-name 必须标识存在于当前服务器中的模块 (SQLSTATE 42704)。 指定的名称不能是模块的别名 (SQLSTATE 560CT)。 将从模式中删除指定的模块,包括所有模块对象。 模块上的所有特权也会被删除。

如果在行许可权或列掩码的定义中引用了该模块,那么不能删除该模块 (SQLSTATE 42893)。

NICKNAME nickname
确定要删除的昵称。 该昵称必须列示在目录中 (SQLSTATE 42704)。 该昵称已从数据库中删除。

有关与昵称相关联的列和索引的所有信息都将从目录中删除。 任何依赖于昵称的具体化查询表都将被删除。 任何依赖于昵称的索引规范都将被删除。 任何依赖于昵称的视图都将标记为不可用。 依赖于已删除的索引规范或不可操作视图的任何程序包都将失效。 该昵称引用的数据源表不受影响。

如果某个 SQL 函数或方法依赖于昵称,那么无法删除该昵称 (SQLSTATE 42893)。

PACKAGE package-name
确定要删除的包。 该软件包名称必须标识目录中描述的软件包 (SQLSTATE 42704)。 已删除指定的包。 如果要删除的包是唯一由 package-name 标识的包(即,没有其他版本),那么还会删除该包上的所有特权。
VERSION version-id
标识要删除的包版本。 如果未指定值,那么版本缺省设置为空字符串。 如果存在多个具有相同包名但版本不同的包,那么在 DROP 语句的一次调用中只能删除一个包版本。 在以下情况下会使用双引号来定界版本标识:
  • 由 VERSION(AUTO) 预编译器选项生成
  • 以数字开头
  • 包含小写或混合大小写字母
如果从操作系统命令提示符中调用该语句,请在每个双引号定界符前加上反斜杠字符,以确保操作系统不会删除定界符。
PERMISSION permission-name
标识要删除的行许可权。 此名称必须标识当前服务器上存在的行许可权 (SQLSTATE 42704)。 此名称不得标识由数据库管理器隐式创建的缺省行许可权 (SQLSTATE 42917)。
程序代号
标识将要删除的过程的实例。 有关更多信息,请参阅 函数,方法和过程指示符。 指定的过程实例必须是目录中描述的过程。 不可能删除 SYSIBM、SYSFUN、SYSIBMADM 或 SYSPROC 模式中的过程 (SQLSTATE 42832)。
RESTRICT
如果触发器定义或 SQL 例程定义包含标识该过程的 CALL,那么 RESTRICT 关键字会阻止删除该过程。
缺省情况下,如果满足以下条件,那么将对与 V9.5 中相同的依赖项强制实施限制规则:
  • auto_reval 数据库配置参数设置为“已禁用”
  • 直接插入触发器定义、直接插入 SQL 函数定义或直接插入 SQL 方法定义包含用于标识该过程的 CALL 语句

不可能删除 SYSIBM、SYSFUN 或 SYSPROC 模式中的过程 (SQLSTATE 42832)。

ROLE role-name
识别要删除的角色。 role-name 必须标识在当前服务器上已存在的角色 (SQLSTATE 42704)。 如果角色具有对例程的 EXECUTE 特权或对序列的 USAGE 特权,并且除程序包以外的 SQL 对象依赖于例程或序列,那么 role-name 不得标识角色或包含 role-name 的角色 (SQLSTATE 42893)。 SQL 对象的所有者是 authorization-name 或任何作为 authorization-name 成员的用户,其中 authorization-name 是角色。
如果对于要删除的角色,下列任何条件成立,那么 DROP ROLE 语句将失败 (SQLSTATE 42893):
  • 存在工作负载,因此连接属性 SESSION_USER ROLE 的其中一个值为 role-name
  • 存在使用 role-name 的可信上下文

指定的角色将从目录中删除。

SCHEMA schema-name RESTRICT
标识要删除的特定模式。 schema-name 必须识别目录中所描述的模式 (SQLSTATE 42704)。
RESTRICT
RESTRICT 关键字强制实施以下规则:对于要从数据库中删除的模式,不能在指定模式中定义任何对象 (SQLSTATE 42893)。
SECURITY LABEL security-label-name
标识要删除的安全标号。 该名称必须使用安全策略 (SQLSTATE 42704) 进行限定,并且必须标识当前服务器上存在的安全标签 (SQLSTATE 42704)。
RESTRICT
如果存在以下任何依赖关系,那么此选项(缺省值)将阻止删除安全标号 (SQLSTATE 42893)
  • 一个或多个授权标识当前持有用于读访问的安全标号
  • 一个或多个授权标识当前具有写访问权的安全标号
  • 当前正在使用安全标签来保护一个或多个列
SECURITY LABEL COMPONENT sec-label-comp-name
标识要删除的安全标号组件。 sec-label-comp-name 必须识别在目录中描述的安全标号组件 (SQLSTATE 42704)。
RESTRICT
此选项 (这是缺省值) 将阻止删除安全标号组件(如果存在下列任何依赖关系)(SQLSTATE 42893)
  • 当前定义了一个或多个包含安全标号组件的安全策略
SECURITY POLICY SECURITY-POLICY-name
标识要删除的安全策略。 security-policy-name 必须标识存在于当前服务器中的安全策略 (SQLSTATE 42704)。
RESTRICT
如果存在以下任何依赖关系,那么此选项(这是缺省值)会阻止删除安全策略 (SQLSTATE 42893)
  • 一个或多个表与此安全策略相关联
  • 一个或多个授权标识对该安全策略中的其中一个规则持有豁免
  • 为此安全策略定义了一个或多个安全标号
SEQUENCE sequence-name
标识要删除的特殊序列。 sequence-name 与隐式或显式模式名称一起,必须标识当前服务器上的现有序列。 如果在显式或隐式指定的模式中不存在具有此名称的序列,那么会返回错误 (SQLSTATE 42704)。
RESTRICT
如果存在以下任何依赖关系,那么 RESTRICT 关键字将阻止删除序列:
  • 触发器存在,因此触发器主体中的 NEXT VALUE 或 PREVIOUS VALUE 表达式指定序列 (SQLSTATE 42893)。
  • SQL 例程存在,因此例程主体中的 NEXT VALUE 表达式指定了序列 (SQLSTATE 42893)。
缺省情况下,如果满足以下条件,那么将对与 V9.5 中相同的依赖项强制实施限制规则:
  • auto_reval 数据库配置参数设置为“已禁用”
  • 直接插入的触发器定义、直接插入的 SQL 函数定义或直接插入的 SQL 方法定义引用序列
SERVER server-name
确定要从目录中删除其定义的数据源。 server-name 必须识别在目录中描述的数据源 (SQLSTATE 42704)。 这将删除数据源的定义。

将删除驻留在数据源中的表和视图的所有昵称。 任何依赖于这些昵称的索引规范都将被删除。 任何用户定义的函数映射,用户定义的类型映射以及依赖于已删除的服务器定义的用户映射也会被删除。 所有依赖于已删除的服务器定义、函数映射、昵称和索引规范的程序包都将失效。 所有依赖于服务器定义的联合过程也将被删除。

service-class-designator
SERVICE CLASS service-class-name
标识要删除的服务类。 service-class-name 必须标识在目录中描述的服务类 (SQLSTATE 42704)。 要删除某个服务子类,必须使用 UNDER 子句来指定 service-superclass-name
UNDER service-superclass-name
当删除服务子类时,指定服务子类的服务超类。 service-superclass-name 必须标识目录中所描述的服务超类 (SQLSTATE 42704)。
RESTRICT
此关键字强制实施以下规则:如果存在以下任何依赖关系,那么不会删除该服务类:
  • 该服务类是服务子类,并且存在到该服务类的工作操作映射 (SQLSTATE 5U031)。 必须先删除该工作操作。
  • 该服务类是阈值中的 REMAP ACTIVITY 操作的目标 (SQLSTATE 5U031)。 请更改阈值以将其他服务子类设置为 REMAP ACTIVITY 操作的目标,或者删除该阈值。
  • 未禁用该服务类 (SQLSTATE 5U031)。 必须先禁用该服务类。
RESTRICT 是缺省行为。
STOGROUP storagegroup-name

标识要删除的存储器组;storagegroup-name 必须标识在当前服务器上存在的存储器组 (SQLSTATE 42704)。 这是一部分名称。

RESTRICT
如果存在使用存储器组的表空间,那么 RESTRICT 关键字会阻止删除存储器组 (SQLSTATE 42893)。 RESTRICT 是缺省行为。

无法删除当前的缺省存储器组 (SQLSTATE 42893)。 可以使用 ALTER STOGROUP 语句来指定新的缺省值。

在添加数据库分区服务器时,不能执行 DROP STOGROUP 语句 (SQLSTATE 55071)。

TABLE table-name

标识要删除的基本表、已创建临时表、或已声明的临时表。 table-name 必须标识目录中描述的表,如果它是已声明的临时表,那么 table-name 必须 由模式名称 SESSION 和 存在于应用程序中 (SQLSTATE 42704)。 类型表的子表依赖于它们的超级表。 必须先删除所有子表,然后才能删除超表 (SQLSTATE 42893)。 table-name 不得标识目录表 (SQLSTATE 42832) 或与系统时间段时态表 (SQLSTATE 42893) 相关联的历史记录表。 指定的表已从数据库中删除。

所有索引、主键、外键、行许可权(包括缺省行许可权)、列掩码、检查约束、具体化查询表以及对该表定义的登台表都将被删除。 所有引用该表的视图和触发器都不可用,包括 CREATE TRIGGER 语句的 ON 子句中引用的表以及触发的 SQL 语句中引用的所有表。 所有依赖于任何已删除或标记为不可用的对象的程序包都将失效。 这包括依赖于层次结构中子表之上的任何超表的包。 已删除的表定义为引用作用域的任何已引用列将变为未限定作用域。

程序包不依赖于已声明的临时表,因此在删除此类表时不会使其失效。 但是,程序包依赖于已创建的临时表,并且在删除此类表时将失效。

在联合系统中,使用透明 DDL 创建的远程表可以被删除。 删除远程表还会删除与该表关联的昵称,并使依赖于该昵称的任何包无效。

从表层次结构中删除子表时,与该子表关联的列将不再可访问,尽管在列数和行大小的限制方面会继续考虑这些列。 删除子表具有从超表中删除该子表的所有行的效果。 这可能导致对超表定义的触发器或引用完整性约束的激活。

如果删除了已创建临时表或声明的临时表,并且在活动工作单元或保存点之前创建了该表,那么该表将从功能上删除,并且应用程序将无法访问该表。 但是,该表仍将在其表空间中保留某些空间,并将阻止删除该用户临时表空间或重新分发该用户临时表空间的数据库分区组,直到落实工作单元或结束保存点为止。 删除已创建临时表或 声明的临时表会导致销毁该表中的数据,而无论 DROP 是已落实还是已回滚。

如果 table-name 是系统时间段时态表,那么还会删除任何关联的历史记录表以及对该历史记录表定义的任何索引。 要删除系统时间段时态表,特权集还必须包含删除历史记录表所需的授权 (SQLSTATE 42501)。

不能使用 DROP 语句显式删除与系统时间段时态表相关联的历史记录表 (SQLSTATE 42893)。 删除关联的系统时间段时态表时,将隐式删除历史记录表。

如果表具有 RESTRICT ON DROP 属性,那么无法删除该表。

新拆离的表最初不可访问。 这将阻止读取、修改或删除该表,直到可以运行 SET INTEGRITY 语句以递增方式刷新 MQT 或完成对外键约束的任何处理为止。 对所有从属表执行 SET INTEGRITY 语句后,该表将完全可访问,其已拆离属性将重置,并且可以将其删除。

删除表时,所有行许可权(包括缺省行许可权)以及为该表创建的列掩码也会被删除。

如果在行许可权或列掩码的定义中引用了该表,那么不能删除该表 (SQLSTATE 42893)。

IF EXISTS
指定如果指定的表名在当前数据库和模式中不存在,那么不会显示任何错误消息。
除非其他条件或依赖关系阻止删除操作,否则即使未删除任何表,也会返回成功消息。 如果该表不存在,那么将忽略失败的条件。
TABLE HIERARCHY root-table-name
标识要删除的类型化表层次结构。 root-table-name 必须标识类型表,该类型表是类型表层次结构中的根表 (SQLSTATE 428DR)。 root-table-name 所标识的类型表及其所有子表都将从数据库中删除。

将删除引用已删除表的所有索引、具体化查询表、登台表、主键、外键和检查约束。 引用已删除的表的所有视图和触发器都将变得无效。 从属于任何删除的对象的程序包或被标记为不可用的程序包均将无效。 将其中一个已删除的表定义为该引用的作用域未限定的任何引用列。

与删除单个子表不同,删除表层次结构不会导致激活层次结构中的任何表的删除触发器,也不会记录已删除的行。

TABLESPACE or TABLESPACES tablespace-name
标识要删除的表空间;tablespace-name 必须标识在目录中描述的表空间 (SQLSTATE 42704)。 这是一部分名称。 tablespace-name 不得标识包含历史记录表的表空间,除非同时删除与其关联的系统时间段时态表 (SQLSTATE 42893)。

如果有任何表将其至少一个部分存储在正在删除的表空间中,并且在另一个未删除的表空间中有一个或多个部分(这些表将需要先删除),或者如果驻留在该表空间中的任何表具有 RESTRICT ON DROP 属性,那么将不会删除这些表空间 (SQLSTATE 55024)。

名称以“SYS”为前缀的对象是内置对象,并且除了 SYSTOOLSPACE 和 SYSTOOLSTMPSPACE 表空间之外,无法删除这些对象 (SQLSTATE 42832)。

如果系统临时表空间是数据库中存在的唯一临时表空间,那么不能删除该表空间 (SQLSTATE 55026)。 如果在用户临时表空间中创建了已创建临时表或已声明临时表的实例,那么不能删除该表空间 (SQLSTATE 55039)。 即使已删除已创建的临时表,在删除已创建的临时表的所有实例之前,仍会将 USER TEMPORARY 表空间视为正在使用。 当会话终止或在会话中引用已创建的临时表时,将删除已创建临时表的实例。 即使已声明的临时表已被删除,在包含 DROP TABLE 语句的工作单元已落实之前, USER TEMPORARY 表空间仍将被视为正在使用。

删除表空间会删除该表空间中定义的所有对象。 所有依赖于表空间的现有数据库对象(例如,程序包、引用约束等)都将被删除或失效(根据情况),并且从属视图和触发器将变为不可操作。

由用户创建的容器不会被删除。 将删除在执行 CREATE TABLESPACE 期间由数据库管理器创建的容器名称的路径中的任何目录。 数据库目录下的所有容器都将被删除。 当落实 DROP TABLESPACE 语句时,将删除指定表空间的 DMS 文件容器或 SMS 容器(如果可能)。 如果无法删除容器(例如,因为另一个代理程序将其保持打开),那么这些文件将截断为零长度。 在终止所有连接或发出 DEACTIVATE DATABASE 命令后,将删除这些长度为零的文件。

THRESHOLD threshold-name
确定要删除的阈值。 threshold-name 必须识别存在于当前服务器上的阈值 (SQLSTATE 42704)。 这是一部分名称。 必须先禁用具有队列的阈值(例如 TOTALSCPARTITIONCONNECTIONS 和 CONCURRENTDBCOORDACTIVITIES),然后才能将其删除 (SQLSTATE 5U025)。 指定的阈值将从目录中删除。
TRIGGER trigger-name
识别要删除的触发器。 trigger-name 必须确定在目录中描述的触发器 (SQLSTATE 42704)。 已删除指定的触发器。

删除触发器会导致某些包被标记为无效。

如果 trigger-name 在视图上指定了 INSTEAD OF 触发器,那么另一个触发器可能通过针对该视图的更新来依赖于该触发器。

TRANSFORM ALL FOR type-name
指示要删除为用户定义的数据类型 type-name 定义的所有变换组。 不会删除这些组中引用的变换函数。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 type-name 必须标识在目录中描述的用户定义的类型 (SQLSTATE 42704)。

如果没有为 type-name 定义任何变换,那么会返回错误 (SQLSTATE 42740)。

DROP TRANSFORM 是 CREATE TRANSFORM 的逆函数。 它会导致与给定数据类型的某些组相关联的变换函数变为未定义。 以前与这些组关联的函数仍然存在,仍可显式调用,但它们不再具有变换属性,并且不再被隐式调用以与主语言环境交换值。

如果以非 SQL 语言编写的用户定义函数(或方法)依赖于为用户定义类型 type-name 定义的组的其中一个变换函数,那么不会删除变换组 (SQLSTATE 42893)。 此类函数依赖于与为类型 type-name 定义的所引用变换组相关联的变换函数。 依赖于与指定变换组关联的变换函数的程序包将标记为不可用。

TRANSFORMS group-name FOR type-name
指示要删除为用户定义的数据类型 type-name 指定的变换组。 不会删除此组中引用的变换函数。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 type-name 必须标识目录中描述的用户定义的类型 (SQLSTATE 42704) ,而 group-name 必须标识 type-name 的现有变换组。
TRIGGER trigger-name
识别要删除的触发器。 trigger-name 必须确定在目录中描述的触发器 (SQLSTATE 42704)。 已删除指定的触发器。

删除触发器会导致某些包被标记为无效。

如果 trigger-name 在视图上指定了 INSTEAD OF 触发器,那么另一个触发器可能通过针对该视图的更新来依赖于该触发器。

TRUSTED CONTEXT CONTEXT-name
标识要丢弃的可信上下文。 context-name 必须识别存在于当前服务器上的可信上下文 (SQLSTATE 42704)。 如果在此上下文的可信连接处于活动状态时删除了可信上下文,那么这些连接将保持可信状态,直到它们终止或下次尝试复用为止。 如果尝试在这些可信连接上切换用户,那么会返回一个错误 (SQLSTATE 42517)。 将从目录中删除指定的可信上下文。
TYPE type-name
标识要删除的用户定义的类型。 在动态 SQL 语句中,使用 CURRENT SCHEMA 专用寄存器作为未限定的对象名的限定符。 在静态 SQL 语句中,QUALIFIER 预编译/绑定选项隐式地指定未限定的对象名的限定符。 对于结构化类型,还会删除关联的引用类型。 type-name 必须标识在目录中描述的用户定义的类型。
RESTRICT
如果满足下列任何条件,那么不会删除该类型 (SQLSTATE 42893):
  • 该类型将用作表或视图的列的类型。
  • 该类型具有子类型。
  • 该类型是一种结构化类型,用作类型表或类型视图的数据类型。
  • 类型是另一个结构化类型的属性。
  • 存在其类型可能包含 type-name 实例的表的一列。 如果 type-name 是列的类型或在列的关联类型层次结构中的其他位置使用,那么可能会发生这种情况。 更正式地说,对于任何类型 T,如果存在其类型直接或间接使用 type-name 的表的列,那么不能删除 T。
  • 该类型是表或视图的引用类型列的目标类型,或另一结构化类型的引用类型属性。
  • 类型或对类型的引用,是函数或方法的参数类型或返回值类型。
  • 该类型是参数类型或在 SQL 过程的主体中使用。
  • 在 SQL 函数或方法的主体中使用该类型或对该类型的引用,但它不是参数类型或返回值类型。
  • 在检查约束、触发器、视图定义或索引扩展中使用该类型。

如果未指定 RESTRICT,那么行为与 RESTRICT 相同,但使用该类型的函数和方法除外。

如果 auto_reval 数据库配置参数设置为“已禁用”,那么缺省情况下会针对与 V9.5 中相同的依赖项强制实施限制规则。

使用以下类型的函数:如果可以删除用户定义的类型,那么对于每个具有参数或要删除的类型的返回值或对要删除的类型的引用的函数 F(具有特定名称 SF),将有效地执行以下 DROP FUNCTION 语句:
   DROP SPECIFIC FUNCTION SF

此语句可能还会级联以删除从属函数。 如果由于对用户定义的类型的依赖关系而导致所有这些函数也在要删除的列表中,那么删除用户定义的类型将成功(否则它将失败,并返回 SQLSTATE 42893)。

使用该类型的方法:如果可以删除用户定义的类型,那么对于每个类型为 T1(具有特定名称 SM)的方法,如果具有参数或要删除的类型的返回值或对要删除的类型的引用,那么将有效地执行以下语句:
   DROP SPECIFIC METHOD SM
   ALTER TYPE T1 DROP SPECIFIC METHOD SM
依赖于这些方法的对象的存在可能会导致 DROP TYPE 操作失败。

所有依赖于在要删除的类型的超类型中定义的方法并且有资格覆盖的包都将失效。

如果在行许可权或列掩码的定义中引用了该类型,那么不能删除该类型 (SQLSTATE 42893)。

TYPE MAPPING type-mapping-name
标识要删除的用户定义的数据类型映射。 type-mapping-name 必须标识在目录中描述的数据类型映射 (SQLSTATE 42704)。 数据类型映射已从数据库中删除。

不会删除其他对象。

USAGE LIST USAGE-LIST-name
标识要删除的使用情况列表。 usage-list-name(包括隐式或显式限定符)必须标识在目录中描述的使用情况列表 (SQLSTATE 42704)。 为使用情况列表分配的内存已释放,并且不受事务控制。
USER MAPPING FOR authorization-name | USER SERVER server-name
标识要删除的用户映射。 此映射会将用于访问联合数据库的授权名称与用于访问数据源的授权名称关联。 这两个授权名称中的第一个是由 authorization-name 标识的,或者是由专用寄存器 USER 引用的。 server-name 标识了第二个授权名称用于访问的数据源。

authorization-name 必须列示在目录中 (SQLSTATE 42704)。 server-name 必须识别在目录中描述的数据源 (SQLSTATE 42704)。 已删除用户映射。

不会删除其他对象。

VARIABLE variable-name
标识要丢弃的全局变量。 variable-name 必须识别存在于当前服务器上的全局变量 (SQLSTATE 42704)。

如果在行许可权或列掩码的定义中引用了该变量,那么不能删除该变量 (SQLSTATE 42893)。

RESTRICT
如果在 SQL 例程定义,触发器定义或视图定义中引用了全局变量,那么 RESTRICT 关键字将阻止该变量被删除 (SQLSTATE 42893)。
缺省情况下,如果满足以下条件,那么将对与 V9.5 中相同的依赖项强制实施限制规则:
  • auto_reval 数据库配置参数设置为“已禁用”
  • 直接插入的触发器定义、直接插入的 SQL 函数定义、直接插入的 SQL 方法定义或视图引用变量
VIEW view-name
确定要删除的视图。 view-name 必须确定在目录中描述的视图 (SQLSTATE 42704)。 带类型视图的子视图取决于它们的超视图。 必须先删除所有子视图,然后才能删除超级视图 (SQLSTATE 42893)。

指定的视图已删除。 任何直接或间接依赖于该视图的视图或触发器的定义都被标记为不可操作。 任何依赖于任何标记为不可用的视图的具体化查询表或登台表都将被删除。 任何依赖于已删除或标记为不可操作的视图的包都将失效。 这包括依赖于层次结构中子视图上方的任何超视图的包。 将已删除视图定义为引用作用域的任何引用列都变为未限定作用域。

如果在行许可权或列掩码的定义中引用了该视图,那么无法删除该视图 (SQLSTATE 42893)。

VIEW HIERARCHY root-VIEW-name
标识要删除的带类型视图层次结构。 root-view-name 必须标识作为带类型视图层次结构中的根视图的带类型视图 (SQLSTATE 428DR)。 将从数据库中删除由 root-view-name 标识的带类型视图及其所有子视图。

直接或间接依赖于任何已删除的视图的任何视图或触发器的定义都标记为不可用。 依赖于任何已删除或标记为不可操作的视图或触发器的任何包都将失效。 已删除的视图或标记为不可操作的视图所针对的任何引用列都定义为未限定该引用的作用域。

WORK ACTION SET WORK-ACTION-SET-name
标识将删除的工作操作集。 work-action-set-name 必须标识存在于当前服务器上的工作操作集 (SQLSTATE 42704)。 work-action-set-name 所包含的所有工作操作也会被删除。
WORK CLASS SET WORK-class-SET-name
标识将删除的工作类集。 work-class-set-name 必须标识在当前服务器上存在的工作类集 (SQLSTATE 42704)。 work-class-set-name 所包含的所有工作类也会被删除。
WORKLOAD workload-name
标识要丢弃的工作负载。 这是一部分名称。 工作负载名称 必须识别当前服务器上存在的工作负载 (SQLSTATE 42704)。 无法删除 SYSDEFAULTUSERWORKLOAD 或 SYSDEFAULTADMWORKLOAD (SQLSTATE 42832)。 必须禁用工作负载,并且在可以删除工作负载之前,该工作负载不得具有关联的活动工作负载实例 (SQLSTATE 5U023)。 要删除具有关联阈值的工作负载 (SQLSTATE 5U031),必须先删除该阈值。 将从目录中删除指定的工作负载。
WRAPPER wrapper-name
标识要删除的包装器。 wrapper-name 必须标识在目录中描述的包装器 (SQLSTATE 42704)。 已删除包装器。

所有依赖于包装器的服务器定义,用户定义的函数映射以及用户定义的数据类型映射都将被删除。 所有用户定义的函数映射、昵称、用户定义的数据类型映射以及依赖于所删除的服务器定义的用户映射也会被删除。 依赖于已删除的昵称的任何索引规范都将被删除,并且依赖于这些昵称的任何视图都将被标记为不可用。 所有依赖于已删除对象和不可用视图的包都将失效。 依赖于已删除的服务器定义的所有联合过程也会被删除。

XSROBJECT xsrobject-name
标识要删除的 XSR 对象。 xsrobject-name 必须识别目录中所描述的 XSR 对象 (SQLSTATE 42704)。

检查引用 XSR 对象的约束是否已删除。 引用 XSR 对象的所有触发器和视图都标记为不可用。 对已删除的 XSR 对象具有依赖关系的包将失效。

在分区数据库环境中,可以通过连接至任何分区来对 XSR 对象发出此语句。

规则

依赖关系: 表 1 显示对象之间的依赖关系。 并非所有依赖关系都显式记录在目录中。 例如,不存在包具有依赖关系的约束的记录。 显示四种不同类型的依赖关系:
R
限制语义。 只要依赖于底层对象的对象存在,就不能删除该对象。
C
级联语义。 删除底层对象也会导致删除依赖于该对象的对象(从属对象)。 但是,如果由于从属对象对其他某个对象具有“限制”依赖关系而无法将其删除,那么底层对象的删除将失败。
X
不可操作的语义。 删除底层对象会导致依赖于该对象的对象变得不可用。 在用户执行某些显式操作之前,它将保持无效。
A
自动失效和重新验证语义。 删除底层对象将导致依赖于该对象的对象变为无效。 数据库管理器将尝试重新验证无效的对象。

仅当例程定义为 MODIFIES SQL DATA 时,才会自动重新验证函数或方法所使用的包,或者由直接或间接从函数或方法调用的过程所使用的包。 如果该例程不是 MODIFIES SQL DATA,那么将返回错误 (SQLSTATE 56098)。

通常,在下次使用无效对象时,数据库管理器会尝试重新验证该对象。 但是,在 auto_reval 设置为 IMMEDIATE 的情况下,受影响的从属对象将在变为无效后立即重新验证。 这些情况是:
  • ALTER TABLE ... ALTER COLUMN
  • ALTER TABLE ... DROP COLUMN
  • ALTER TABLE ... RENAME COLUMN
  • ALTER TYPE ... ADD ATTRIBUTE
  • ALTER TYPE ... DROP ATTRIBUTE
  • 任何指定 OR REPLACE 的 CREATE 语句
当数据库配置参数 auto_reval 设置为 IMMEDIATE 或 DEFERRED 时, 表 1 中显示的某些依赖关系将更改为 A (自动失效/重新验证语义)。 表 2 汇总了受影响的从属对象。 在执行语句列中列出的相应语句时,受影响的从属对象列中列出的对象将失效。
某些 DROP 语句参数和对象不会显示在 表 1 中,因为它们会导致空行或空列:
  • EVENT MONITOR、PACKAGE、PROCEDURE、SCHEMA、TYPE MAPPING 和 USER MAPPING DROP 语句没有对象依赖关系。
  • 别名、缓冲池、分发键、特权和过程对象类型不具有 DROP 语句依赖关系。
  • 在下列任何一种情况下,都无法处理给定工作单元 (UOW) 中的 DROP SERVER、DROP FUNCTION MAPPING 或 DROP TYPE MAPPING 语句:
    • 该语句引用了单个数据源,并且 UOW 已包含一个 SELECT 语句,该语句引用此数据源中的表或视图的昵称 (SQLSTATE 55006)。
    • 该语句引用了一类数据源(例如,特定类型和版本的所有数据源),并且 UOW 已包含一个 SELECT 语句,该语句引用其中一个数据源中某个表或视图的昵称 (SQLSTATE 55006)。
表 1. 依赖性
语句 对象类型
c
o
n
s
t
r
a
i
n
t
f
u
n
c
t
i
o
n
f
u
n
c
t
i
o
n

m
a



i n
g
g
l
o
b
a
l

v
a
r
i
a
b
l
e




i
n
d
e
x

e
x
t
e
n
s
i
o
n
M
A
S
K

E
T
H
O
D
昵称






d
b

p
a
r
t
i
t
i
o
n

g

r
o u
p
P
A
C
K
A
G
E31
p
e
r
m
i
s
s
i
o
n
S
E
R
V
E
R
服务





等级





T
A
B
L
E
T
A
B
L
E

S
P
A
C
E
t
h
r
e
s
h
o
l
d
t
r
i
g
g
e
r

Y
P
E
t
y
p
e

m
a
p
p
i
n
g
u
s
a
g
r

l
i
s
t
u
s
e
r

m
a
p
p
i
n
g
V
I
E
W
w
o
r
k

a
c
t
i
o
n
w
o
r
k

a
c
t
i
o
n

s
e
t
工作



负荷


x
s
r
o
b
j
e
c
t
ALTER FUNCTION - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER METHOD - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER NICKNAME 更改本地名称或本地类型 R33 R - - - - - R - - A - - - R - - - - - - - R - - - -
ALTER NICKNAME 改变列选项或昵称选项 - - - - - - - - - - A - - - R - - - - - - - - - - - -
ALTER NICKNAME、添加、变更或删除约束 - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER PROCEDURE - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER SERVER - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER TABLE ALTER COLUMN - A - A - - R - - - A - - - - - - A - - - - A - - - X34
ALTER TABLE DROP COLUMN C C - C C - R - - - - R - - - - - C - - - - C - - - X34
ALTER TABLE DROP CONSTRAINT C - - - - - - - - - 1 - - - - - - - - - - - - - - - -
ALTER TABLE DROP PARTITIONING KEY - - - - - - - - - R20 1 - - - - - - - - - - - - - - - -
ALTER TYPE ADD ATTRIBUTE - - - - - R - - - - 23 - - - R24 - - - - - - - 14 - - - -
ALTER TYPE ALTER METHOD - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER TYPE DROP ATTRIBUTE - - - - - R - - - - 23 - - - R24 - - - - - - - 14 - - - -
ALTER TYPE ADD METHOD - - - - - - - - - - - - - - - - - - - - - - - - - - -
ALTER TYPE DROP METHOD - - - - - - - 27 - - - - - - - - - - - - - - - - - - -
CREATE METHOD - - - - - - - - - - 28 - - - - - - - - - - - - - - - -
CREATE TYPE - - - - - - - - - - 29 - - - - - - - - - - - - - - - -
DROP ALIAS - R - R - - R - - - 3 R - - C3 - - X3 - - - - X3 - - - -
DROP BUFFERPOOL - - - - - - - - - - - - - - - R - - - - - - - - - - -
DROP DATABASE PARTITION GROUP - - - - - - - - - - - - - - - C - - - - - - - - - - -
DROP FUNCTION R R7 R R - R R R7 - - X R - - R - - R - - - - R - - - -
DROP FUNCTION MAPPING - - - - - - - - - - A - - - - - - - - - - - - - - - -
DROP INDEX R - - - - - - - - - A - - - - - - - - - 37 - 17 - - - -
DROP INDEX EXTENSION - R - R R - - - - - - - - - - - - - - - - - - - - - -
DROP MASK - - - - - - - - - - 39 - - - - - - - - - - - - - - - -
DROP METHOD R R7 R R - R - R - - X 和
A30
- - - R - - R - - - - R - - - -
DROP NICKNAME - R - R C - - R - - A - - - 11 - - - - - - - X16 - - - -
DROP PERMISSION - - - - - - - - - - 40 - - - - - - - - - - - - - - - -
DROP PROCEDURE - R7 - R - - - R7 - - A - - - - - - R - - - - - - - - -
DROP SEQUENCE - R - - - - - R - - A - - - - - - R - - - - - - - - -
DROP SERVER - 21 19 - - - - - C - A - - - - - - - - 19 - C - - - - -
DROP SERVICE CLASS - - - - - - - - - - - - - - - - R35 - - - - - - R35 - R35 -
DROP STOGROUP - - - - - - - - - - - - - - - R - - - - - - - - - - -
删除表 32 C R - R C - R - - - 9 R - - R ,
C11
- - X16 - - 37 - X16 - - - X34
DROP TABLE HIERARCHY C R - R C - - - - - 9 - - - R ,
C11
- - X16 - - - - X16 - - - -
DROP TABLESPACE - - - - 6 - - - - - - - - - C ,
R6
- - - - - - - - - - - -
DROP TRANSFORM - R - - - - - - - - X - - - - - - - - - - - - - - - -
DROP TRIGGER - - - - - - - - - - 1 - - - - - - X26 - - - - - - - - -
DROP TYPE R13 R5 - R - R - - - - 12 - - - 18 - - R13 R4 - - - 14 - - - -
DROP VARIABLE - - R R - - R R - - A R - - - - - R - - - - R - - - -
DROP VIEW - R - R - - R - - - 2 R - - - - - X16 - - - - X15 - - - -
DROP VIEW HIERARCHY - R - R - - - - - - 2 - - - - - - X16 - - - - X16 - - - -
DROP WORK CLASS SET - - - - - - - - - - - - - - - - - - - - - - - - 36 - -
DROP WRAPPER - - C - - - - - - - - - C - - - - - - C - - - - - - -
DROP XSROBJECT C - - - - - - - - - A - - - - - - X - - - - X - - - -
REVOKE 特权10 - C ,
R25
- - - - 38 C ,
R25
- - 1 38 - - C 和
X8
- - X - - - - X8 - - - -
1
根据具有这些约束,触发器或分布键的表,此依赖关系是隐式的。
2
如果程序包具有对视图执行操作的 INSERT、UPDATE 或 DELETE 语句,那么该程序包将对该视图的底层基本表具有插入、更新或删除用法。 在 UPDATE 的情况下,对于由 UPDATE 修改的底层基本表的每列,该包都具有更新用法。

如果包具有作用于带类型视图的语句,那么在同一视图层次结构中创建或删除任何视图将使包失效。

3
如果包、具体化查询表、登台表、视图或触发器使用别名,那么它将同时依赖于别名和别名所引用的对象。 如果别名在链中,那么将在链中的每个别名上创建依赖关系。

别名本身不依赖于任何内容。 可能在不存在的对象上定义了别名。

4
一个用户定义的类型 T 可以依赖于另一个用户定义的类型 B,如果 T:
  • 将 B 命名为属性的数据类型
  • 具有 REF(B) 属性
  • 将 B 作为超类型。
5
如果用户定义的类型被引用为函数参数类型或返回类型,那么由于例程参数依赖关系,该类型将被删除,并且其目录数据将被维护。 SYSCAT.DATATYPES 目录视图的 VALID 列中的值“X”指示此已删除类型。 如果 DROP FUNCTION 语句还删除了此类型的最后一个例程参数依赖关系,或者将由具有相同模式名称、模块名称和类型名称的 CREATE TYPE 语句删除其目录数据,那么 DROP FUNCTION 语句将删除此目录数据。 如果用户定义的类型是结构化类型,那么与该类型关联的任何方法也会被删除。
6
删除表空间或表空间列表将导致完全包含在给定表空间或列表中的所有表被删除。 但是,如果某个表跨表空间(不同表空间中的索引、长列或数据分区)并且这些表空间不在要删除的列表中,那么只要该表存在,就无法删除这些表空间。
7
如果从属函数指定 SOURCE 子句中的基本函数,那么该函数可能依赖于另一个特定函数。 函数或方法也可以依赖于另一个特定函数或方法(如果从属例程是用 SQL 编写的并在其主体中使用基本例程)。 外部方法或具有结构化类型参数或返回类型的外部函数也将依赖于一个或多个转换函数。
8
只有丢失 SELECT 特权才会导致具体化查询表被删除或视图变得不可用。 如果使其不可操作的视图包含在类型化视图层次结构中,那么它的所有子视图也将变为不可操作。
9
如果程序包具有对表 T 执行操作的 INSERT、UPDATE 或 DELETE 语句,那么该程序包具有对 T 的插入、更新或删除用法。 在 UPDATE 的情况下,对于由 UPDATE 修改的 T 的每一列,程序包都具有更新用法。

如果程序包具有作用于类型表的语句,那么在同一表层次结构中创建或删除任何表将使程序包失效。

10
在列级别不存在依赖关系,因为无法单独撤销对列的特权。

如果包、触发器或视图在 FROM 子句中包含 OUTER (Z) 的使用,那么对 Z 的每个子表或子视图都具有 SELECT 特权的依赖关系。 同样,如果包、触发器或视图包含使用 DEREF (Y),其中 Y 是具有目标表或视图 Z 的引用类型,那么对 Z 的每个子表或子视图都具有 SELECT 特权的依赖关系。

11
具体化查询表依赖于在表定义的全查询中指定的底层表或昵称。

级联语义适用于从属具体化查询表。

子表依赖于它的超表,直到根表为止。 在删除超表的所有子表之前,不能删除该超表。

历史记录表依赖于与之关联的系统时间段时态表。 当删除所依赖的系统周期临时表时,级联语义将应用于历史记录表。

12
作为使用 TYPE 谓词或子类型处理表达式(TREAT 表达式 AS data-type)的结果,包可以依赖于结构化类型。 该包具有对 TYPE 谓词右侧或 TREAT 表达式右侧指定的每个结构化类型的子类型的依赖关系。 删除或创建改变包所依赖的子类型的结构化类型会导致无效。

所有依赖于在要删除的类型的超类型中定义的方法并且有资格覆盖的包都将失效。

13
如果类型在约束或触发器中的任何位置使用,那么检查约束或触发器取决于该类型。 对于检查约束或触发器中的 TYPE 谓词中使用的结构化类型的子类型不存在任何依赖关系。
14
如果在视图定义中的任何位置使用类型(这包括类型视图的类型),那么视图将依赖于类型。 对于视图定义内的 TYPE 谓词中使用的结构化类型的子类型不存在任何依赖关系。
15
子视图依赖于它的超视图,直至根视图为止。 在删除超视图的所有子视图之前,不能删除该超视图。 请参阅 16 以了解其他视图依赖关系。
16
触发器或视图也取决于解除引用操作或 DEREF 函数的目标表或目标视图。 具有包含 OUTER (Z) 的 FROM 子句的触发器或视图依赖于在创建触发器或视图时存在的 Z 的所有子表或子视图。
17
带类型视图可以依赖于唯一索引的存在,以确保对象标识列的唯一性。
18
表可能依赖于用户定义的数据类型(单值或结构化),因为该类型为:
  • 作为列的类型使用
  • 用作该表的类型
  • 用作该表的类型的属性
  • 用作引用类型的目标类型,该类型是表的列的类型或表的类型的属性
  • 由作为该表的列的类型直接或间接使用。
19
删除服务器级联,以删除为该指定服务器创建的函数映射和类型映射。
20
如果在多分区数据库分区组中的表上定义了分发键,那么需要该分发键。
21
如果从属 OLE DB 表函数具有“R”个从属对象(请参阅 DROP FUNCTION),那么无法删除服务器。
22
SQL 函数或方法可能依赖于其主体所引用的对象。
23
当删除类型为 TA type-name T 的属性 A 时,会有效地执行下列 DROP 语句:
   Mutator method: DROP METHOD A (TA) FOR T
   Observer method: DROP METHOD A () FOR T
   ALTER TYPE T
     DROP METHOD A(TA)
     DROP METHOD A()
24
在下列情况下,表可能取决于用户定义的结构化数据类型的属性:
  1. 该表是一个基于 type-name 或其任何子类型的类型表。
  2. 该表具有直接或间接引用 type-name 的类型的现有列。
25
如果定义的函数或方法主体不再具有 SELECT 特权,那么对 SQL 函数或方法主体的主体中所使用的表或视图的 SELECT 特权的 REVOKE 将导致尝试删除该函数或方法主体。 如果在视图、触发器、函数或方法主体中使用了此类函数或方法主体,那么无法将其删除,并且 REVOKE 将作为结果进行限制。 否则,REVOKE 级联并删除此类函数。
26
当触发器修改定义了 INSTEAD OF 触发器的视图时,它将依赖于 INSTEAD OF 触发器,而 INSTEAD OF 触发器将触发。
27
不能删除被其他方法覆盖的原始方法的方法声明 (SQLSTATE 42893)。
28
如果要创建的方法主体的方法声明为覆盖另一个方法,那么依赖于被覆盖的方法以及在所创建方法的超类型中覆盖此方法的方法的所有包都将失效。
29
创建现有类型的新子类型时,所有依赖于正在创建的类型的超类型中定义的方法以及有资格覆盖的方法(例如,无增变器或观察器)的包都将失效。
30
如果要删除的方法主体的特定方法声明为覆盖另一方法,那么所有依赖于被覆盖的方法,以及在要删除的特定方法的超类型中覆盖此方法的方法的包都将失效。
31
高速缓存的动态 SQL 与程序包具有相同的语义。
32
当使用 DROP TABLE 语句删除远程基本表时,将同时删除昵称和远程基本表。
33
未由外键引用的主键或唯一键不会限制昵称本地名称或本地类型的变更。
34
由于对与要分解的 XML 模式关联的表进行了更改,因此 XSROBJECT 可能无法进行分解。 可能会影响分解的更改包括:删除该表或删除该表的一列,或更改该表的一列。 可通过发出 ALTER XSROBJECT 语句来对 XML 模式启用或禁用分解,从而重置 XML 模式的分解状态。
35
  • 如果有任何工作负载映射到某个服务类,那么无法将该服务类删除 (SQLSTATE 5U031)。
  • 如果任何工作操作映射到某个服务子类,那么无法将其删除 (SQLSTATE 5U031)。
  • 如果服务子类是阈值 REMAP 操作的目标 (SQLSTATE 5U031),那么无法显式删除该服务子类。

删除服务超类级联以删除为该服务类定义的任何阈值、工作操作集和服务子类。

36
在删除工作类集上定义的工作操作集之前,不能删除该工作类集。
37
一旦删除索引或表,它的使用情况列表将在目录中失效。 将在下一次激活列表时进行重新验证,或者可以使用过程 ADMIN_REVALIDATE_DB_OBJECTS 显式重新验证该列表。
38
如果撤销特权会导致对象被删除或失效,并且许可权或掩码依赖于该特权,那么该特权会受到限制。 例如,如果您具有依赖于某个表的视图,并且具有引用该视图的许可权或掩码,那么该表上的 REVOKE SELECT 将使该视图失效,但会导致错误。
39
如果定义了已启用许可权的表对该表激活了行级别访问控制,那么程序包将失效。 删除已禁用或在已取消激活行访问控制的表上定义的许可权时,软件包不受影响。
40
如果定义了已启用许可权的表对该表激活了行级别访问控制,那么程序包将失效。 删除已禁用或在已取消激活行访问控制的表上定义的许可权时,软件包不受影响。
表 2. 受 auto_reval 影响的从属对象
语句 受影响的从属对象
ALTER NICKNAME(更改局部名或局部类型) 锚点类型、函数、方法、过程、用户定义的类型、变量、视图
ALTER TABLE ALTER COLUMN 锚点类型、函数、方法、过程、触发器4用户定义的类型、变量、视图、XSROBJECT
更改表 drop column2 锚点类型、函数、方法、索引、过程、触发器4用户定义的类型、变量、视图、XSROBJECT
ALTER TABLE RENAME COLUMN1 , 3 锚点类型、函数、方法、索引、过程、触发器4用户定义的类型、变量、视图、XSROBJECT
ALTER TYPE ADD ATTRIBUTE 视图
ALTER TYPE DROP ATTRIBUTE 视图
DROP ALIAS 锚点类型、函数、方法、过程、触发器、用户定义的类型、变量、视图
DROP FUNCTION (ALTER MODULE DROP FUNCTION) 函数、函数映射、索引扩展、方法、过程、触发器、变量、视图
DROP METHOD 函数、函数映射、索引扩展、方法、过程、触发器、变量、视图
DROP NICKNAME 锚点类型、函数、方法、过程、触发器、用户定义的类型、变量、视图
DROP PROCEDURE (ALTER MODULE DROP PROCEDURE) 函数、方法、过程、触发器
DROP SEQUENCE 函数、方法、过程、触发器、变量、视图
DROP TABLE 锚点类型、函数、方法、过程、触发器4用户定义的类型、变量、视图、XSROBJECT
DROP TABLE HIERARCHY 函数、方法、过程、触发器、变量、视图
DROP TRIGGER 触发器
DROP TYPE (ALTER MODULE DROP TYPE) 锚点类型、游标类型、函数、方法、过程、索引扩展、触发器、用户定义的类型、变量、视图
DROP VARIABLE (ALTER MODULE DROP VARIABLE) 锚点类型、函数、函数映射、方法、过程、触发器、用户定义的类型、变量、视图
DROP VIEW 锚点类型、函数、方法、过程、触发器4用户定义的类型、变量、视图
DROP VIEW HIERARCHY 函数、过程、触发器、变量、视图
DROP XSROBJECT 触发器、视图
RENAME TABLE 锚点类型、函数、方法、过程、触发器4用户定义的类型、变量、视图、XSROBJECT
REVOKE 特权 函数、方法、过程、触发器、变量、视图
创建或替换别名1 函数、触发器、过程、变量、视图
创建或替换视图 1 锚点类型、函数、方法、过程、触发器4用户定义的类型、变量、视图
创建或替换函数 1 函数、函数映射、索引扩展、方法、过程、变量、视图
创建或替换过程1 函数、方法、过程、触发器
创建或替换昵称1 函数、方法、过程、变量、视图
创建或替换序列1 函数、方法、过程、触发器、变量、视图
创建或替换变量1 函数、方法、过程、触发器、用户定义的类型、变量、视图
创建或替换触发器1 触发器
1
立即重新验证语义适用于这些语句(对于 CREATE 语句,仅当指定了 OR REPLACE 时),而不考虑 auto_reval 数据库配置参数的设置。
2
所列示的从属对象将在下次使用该对象时重新验证,但下列对象除外,这些对象将立即作为语句的一部分重新验证:
  • ANCHOR TYPE
  • CURSOR TYPE
  • VIEW(其中选择列表仅包含 SELECT *,并且不包含任何显式定义的视图列)。
对于即时视图重新验证,将在重新验证期间重新建立选择列表的列名称列表。
3
所列示的从属对象将在下次使用该对象时重新验证,但下列对象除外,这些对象将立即作为语句的一部分重新验证:
  • 用户定义类型
  • VIEW(其中选择列表仅包含 SELECT *,并且不包含任何显式定义的视图列)。
对于即时视图重新验证,将在重新验证期间重新建立选择列表的列名称列表。
4
如果依赖关系是因为在表或视图上定义了触发器,那么表 1 中的不可用语义将继续适用。 如果依赖关系是由于触发器主体引用了表或视图,那么将应用自动失效和重新验证语义。

如果添加数据库分区服务器请求处于暂挂状态或正在进行中,那么 DROP DATABASE PARTITION GROUP 语句可能会失败 (SQLSTATE 55071)。 如果新数据库分区服务器是以联机方式添加至实例,并且并非所有应用程序都知道该新数据库分区服务器,那么此语句也可能失败(SQLSTATE 55077)。

注意

  • 在用户定义的函数正在使用时将其删除是有效的。 此外,游标可以在包含对用户定义函数的引用的语句上打开,并且在此游标打开时,可以在不导致游标访存失败的情况下删除该函数。
  • 如果依赖于用户定义的函数的程序包正在执行,那么在该程序包完成其当前工作单元之前,另一个授权标识无法删除该函数。 此时,该函数将被删除,并且该包将变为不可用。 此包的下一个请求会导致错误,指示必须显式重新绑定该包。
  • 当需要函数体的应用程序正在执行时,可能发生函数体的移除(这与删除函数的操作非常不同)。 这可能导致语句失败,也可能不会导致语句失败,具体取决于数据库管理器是否仍需要代表语句将函数体装入存储器。
  • 除了为任何显式指定的 UDF 记录的依赖关系之外,还会在隐式需要变换时记录以下依赖关系:
    1. 当函数或方法的结构化类型参数或结果需要变换时,将为函数或方法记录对必需的 TO SQL 或 FROM SQL 变换函数的依赖关系。
    2. 当包中包含的 SQL 语句需要变换函数时,将记录该包对指定的 TO SQL 或 FROM SQL 变换函数的依赖关系。

    因为这些描述了由于隐式调用变换而记录依赖关系的唯一情况,所以除了函数、方法或包之外,任何对象都不能对隐式调用的变换函数具有依赖关系。 另一方面,对变换函数的显式调用(例如,在视图和触发器中)确实会导致这些其他类型的对象对变换函数的通常依赖关系。 因此,DROP TRANSFORM 语句也可能失败,因为正在删除这些“显式”类型的对象对变换的依赖关系 (SQLSTATE 42893)。

  • 由于依赖关系目录不区分作为变换的函数与通过显式函数调用的函数之间的依赖关系,因此建议不编写对变换函数的显式调用。 在此类实例中,无法删除函数上的变换属性,或者仅因为包在 SQL 表达式中包含显式调用而将其标记为不可操作。
  • 不能使用 DROP SEQUENCE 语句来删除系统为 IDENTITY 列创建的序列。
  • 删除序列时,还会删除该序列上的所有特权,并且引用该序列的任何包都将失效。
  • 对于关系昵称,在下列任何一种情况下都无法处理给定工作单元 (UOW) 中的 DROP NICKNAME 语句 (SQLSTATE 55007):
    • 此语句中引用的昵称在同一 UOW 中有一个打开的游标
    • 已在同一 UOW 中针对此语句中所引用的昵称发出 INSERT、DELETE 或 UPDATE 语句
  • 对于非关系昵称,在以下任何条件下都无法处理给定工作单元 (UOW) 中的 DROP NICKNAME 语句 (SQLSTATE 55007):
    • 此语句中引用的昵称在同一 UOW 中有一个打开的游标
    • 此语句中引用的昵称已由同一 UOW 中的 SELECT 语句引用。
    • 已在同一 UOW 中针对此语句中所引用的昵称发出 INSERT、DELETE 或 UPDATE 语句
  • 在下列任何一种情况下,都无法处理给定工作单元 (UOW) 中的 DROP SERVER 语句 (SQLSTATE 55006) 或 DROP FUNCTION MAPPING 或 DROP TYPE MAPPING 语句 (SQLSTATE 55007):
    • 该语句引用单个数据源,并且 UOW 已包含下列其中一个项:
      • 引用此数据源中表或视图的昵称的 SELECT 语句
      • 此数据源中表或视图的昵称上的打开游标
      • 针对此数据源中表或视图的昵称发出的 INSERT、DELETE 或 UPDATE 语句
    • 该语句引用了一个类别的数据源(例如,特定类型和版本的所有数据源),并且 UOW 已包含下列其中一项:
      • 引用这些数据源中表或视图的昵称的 SELECT 语句
      • 这些数据源中表或视图的昵称上的打开游标
      • 针对这些数据源中表或视图的昵称发出的 INSERT、DELETE 或 UPDATE 语句
  • DROP WORKLOAD 语句在落实之后才会生效,即使对于发出该语句的连接也是如此。
  • 任何应用程序一次只能发出这些语句中的一个,并且在任何一个工作单元内只允许发出这些语句中的一个。 每个语句必须后跟 COMMIT 或 ROLLBACK 语句,然后才能发出这些语句中的另一个语句 (SQLSTATE 5U021)。
    • CREATE HISTOGRAM TEMPLATE、ALTER HISTOGRAM TEMPLATE 或 DROP (HISTOGRAM TEMPLATE)
    • CREATE SERVICE CLASS、ALTER SERVICE CLASS 或 DROP (SERVICE CLASS)
    • CREATE THRESHOLD、ALTER THRESHOLD 或 DROP (THRESHOLD)
    • CREATE WORK ACTION、ALTER WORK ACTION 或 DROP (WORK ACTION)
    • CREATE WORK CLASS、ALTER WORK CLASS 或 DROP (WORK CLASS)
    • CREATE WORKLOAD、ALTER WORKLOAD 或 DROP (WORKLOAD)
    • GRANT(工作负载权限)或 REVOKE(工作负载权限)
  • 软失效:在下列语句对数据库对象进行删除或更改之后,对已删除或已更改对象的活动访问将继续进行,直到访问完成为止。
    • ALTER FUNCTION
    • ALTER MODULE ... DROP FUNCTION
    • ALTER MODULE ... DROP VARIABLE
    • ALTER TABLE ... DETACH PARTITION
    • ALTER VIEW
    • DROP ALIAS
    • DROP FUNCTION
    • DROP TRIGGER
    • DROP VARIABLE
    • DROP VIEW
    • 所有 CREATE 或 REPLACE 语句(CREATE 或 REPLACE SEQUENCE 除外)。
    当数据库注册表变量 DB2_DLL_SOFT_INVALID 设置为 ON 时,会出现这种情况。 当它设置为 OFF 时,只有在对要删除或更改的对象的所有活动访问完成后,这些对象的删除或更改才会完成。
  • 语法替代方法: 为了与先前版本的 Db2® 兼容,支持以下语法替代方法 以及其他数据库产品。 这些备用项是非标准的,不应使用。
    • 可指定 NODEGROUP 来代替 DATABASE PARTITION GROUP
    • 可以指定 DISTINCT TYPE TYPE-name 来代替类型 TYPE-name
    • 可以指定 DATA TYPE TYPE-name 来替代类型 TYPE-name
    • 可以指定 SYNONYM 代替 ALIAS
    • 可以指定 PROGRAM 来代替 PACKAGE
  • 删除行许可权或列掩码后使程序包和动态高速缓存的语句失效:如果对该表激活了行级别访问控制,那么删除为该表定义的已启用行许可权将使引用该表的所有程序包和动态高速缓存语句失效。 如果对该表激活了列级别访问控制,那么删除为该表定义的已启用列掩码将使引用该同一表的所有程序包和动态高速缓存语句失效。 对于删除已禁用的掩码或许可权,不存在失效。
  • 循环依赖关系:以下示例中存在循环依赖关系:
    CREATE PERMISSION RP1 ON T1 FOR ROWS
         WHERE C1>(SELECT MAX(C1) FROM T2)
    ENFORCED FOR ALL ACCESS
    ENABLE;
    
    CREATE PERMISSION RP2 ON T2 FOR ROWS
         WHERE C1>(SELECT MAX(C1) FROM T1)
    ENFORCED FOR ALL ACCESS
    ENABLE
    DROP TABLE T1DROP TABLE T2 语句失败,因为 RP1 依赖于 T2,而 RP2 依赖于 T1。 具有 SECADM 权限的用户应该先删除其中一个行许可权,然后再发出 DROP TABLE 语句。

示例

  1. 删除表 TDEPT。
       DROP TABLE TDEPT
  2. 删除视图 VDEPT。
       DROP VIEW VDEPT
  3. 授权标识 HEDGES 会尝试删除别名。
       DROP ALIAS A1
    已从目录中除去别名 HEDGES.A1。
  4. Hedges 尝试删除别名,但将 T1 指定为别名名称,其中 T1 是现有表的名称(而不是别名的名称)。
       DROP ALIAS T1
    此语句失败 (SQLSTATE 42809)。
  5. 删除 BUSINESS_OPS 数据库分区组。 要删除数据库分区组,必须先删除该数据库分区组中的两个表空间(ACCOUNTING 和 PLANS)。
       DROP TABLESPACE ACCOUNTING
       DROP TABLESPACE PLANS
       DROP DATABASE PARTITION GROUP BUSINESS_OPS
  6. Pellow 希望删除他在 PELLOT 模式中创建的 CENTER 函数,并使用特征符来标识要删除的函数实例。
       DROP FUNCTION CENTER (INT,FLOAT)
  7. McBride 希望删除她在 PELLOT 模式中创建的 FOCUS92 函数,并使用特定名称来识别要删除的函数实例。
       DROP SPECIFIC FUNCTION PELLOW.FOCUS92
  8. 从 CHEM 模式中删除函数 ATOMIC_WEIGHT,在该模式中已知只有一个具有该名称的函数。
       DROP FUNCTION CHEM.ATOMIC_WEIGHT
  9. 删除触发器 SALARY_BONUS,这会导致在指定条件下的员工获得其工资的奖金。
       DROP TRIGGER SALARY_BONUS
  10. 删除名为 shoesize 的单值数据类型(如果当前未使用)。
       DROP TYPE SHOESIZE
  11. 删除 SMITHPAY 事件监视器。
       DROP EVENT MONITOR SMITHPAY
  12. 使用 RESTRICT 从 CREATE SCHEMA 下的示例 2 中删除模式。 请注意,必须先删除名为 PART 的表。
      DROP TABLE PART
      DROP SCHEMA INVENTRY RESTRICT
  13. Macdonald 希望删除他在 EIGLER 模式中创建的 DESTROY 过程,并使用在系统目录中找到的特定名称来标识要删除的过程。
       DROP SPECIFIC PROCEDURE  EIGLER.SQL100506102825100
  14. 从 BIOLOGY 模式中删除过程渗透,其中已知只有一个具有该名称的过程。
       DROP PROCEDURE BIOLOGY.OSMOSIS
  15. 用户 SHAWN 使用一个授权标识来访问联合数据库,并使用另一个授权标识来访问名为 ORACLE1 的 Oracle 数据源中的数据库。 在这两个授权之间创建了映射,但 SHAWN 不再需要访问数据源。 删除映射。
       DROP USER MAPPING FOR  SHAWN SERVER ORACLE1
  16. 已删除某个昵称引用的数据源表的索引。 删除已创建的索引规范,以让优化器知道此索引。
       DROP INDEX INDEXSPEC 
  17. 删除 MYSTRUCT1 变换组。
       DROP TRANSFORM MYSTRUCT1 FOR POLYGON
  18. 在 PERSONNEL 模式中删除 EMP 数据类型的 BONUS 方法。
       DROP METHOD BONUS (SALARY DECIMAL(10,2)) FOR PERSONNEL.EMP
  19. 删除序列 ORG_SEQ,但有限制。
       DROP SEQUENCE ORG_SEQ
  20. 已使用透明 DDL 在联合系统中创建远程表 EMPLOYEE。 不再需要对该表的访问权。 删除远程表 EMPLOYEE。
       DROP TABLE EMPLOYEE
  21. 删除函数映射 BONUS_CALC,然后恢复缺省函数映射(如果存在)。
       DROP FUNCTION MAPPING BONUS_CALC
  22. 删除安全标号组件 LEVEL。
       DROP SECURITY LABEL COMPONENT LEVEL
  23. 删除安全策略 DATA_ACCESS 的安全标号 EMPLOYESECLABEL。
       DROP SECURITY LABEL DATA_ACCESS.EMPLOYEESECLABEL
  24. 删除安全策略 DATA_ACCESS。
       DROP SECURITY POLICY DATA_ACCESS
  25. 删除安全标号组件 GROUPS。
       DROP SECURITY LABEL COMPONENT GROUPS
  26. 删除位于 SQL 模式 HR 中的 XML 模式 EMPLOYEE。
       DROP XSROBJECT HR.EMPLOYEE
  27. 删除服务超类 PETSALES 下的服务子类 DOGSales。
       DROP SERVICE CLASS DOGSALES UNDER PETSALES
  28. 删除没有用户定义的服务子类的服务超类 PETSALES。 自动删除服务类 PETSALES 的缺省子类。
       DROP SERVICE CLASS PETSALES
  29. DROP 许可权 P1。
       DROP PERMISSION P1
  30. DROP 掩码 M1。
       DROP MASK M1
  31. 删除名为 TEST_SG 的存储器组。
       DROP STOGROUP TEST_SG
  32. 删除用法列表 MON_PAYROLL
       DROP USAGE LIST MON_PAYROLL