Oracle alter table drop constraint drop index 在语法上是否有效?

Is Oracle alter table drop constraint drop index syntactically valid?

我有 Oracle 11.2.0.2.0 和 table 具有通过以下脚本创建的唯一约束:

    create table foo (id varchar(26) not null, name varchar(50) not null);
    alter table foo add constraint pk_foo primary key (id);
    /**/
    alter table foo add constraint un_foo unique (name); 

我需要删除唯一约束,这很简单:

    alter table foo drop constraint un_foo;

问题是:当数据库在SQLDeveloper中备份然后恢复时,un_foo唯一索引是由explicit命令创建的在 /**/ 行:

    CREATE UNIQUE INDEX un_foo ON foo (name);

这样一个显式创建的索引不会被上面的alter命令删除。我意识到以下命令有效:

    alter table foo drop constraint un_foo drop index;

对于主键,documentation or in Oracle Developer Community discussion. Also, this answer at AskTom 中的类似命令 alter table foo drop primary key drop index 也使用此语法(对于 keep index)。但是,我在 alter table 命令的铁路图中看不到这种语法的任何推理。

问题:语法alter table foo drop constraint un_foo drop index合法吗?如果是这样,基于什么文档或铁路图中的流程?如果不是,为什么命令不会失败?

谢谢!

根据@Chris Saxon's answer to my equivalent question posted to AskTom,语法已确认有效但未出现在文档中。 它是文档错误还是意外副作用的决定仍未解决。

我个人决定依赖语法,因为除其他外,My Oracle Support 中也建议使用语法。

如果需要绝对安全(阅读:符合文档),唯一的可能性是使用语句alter table foo drop unique (name) drop index;

我在blogpost(捷克语)中总结了(不是很重要)围绕这个问题的情况。