Oracle SQL开发人员没有显示DDL更改

时间:2015-08-17 08:44:43

标签: sql oracle oracle-sqldeveloper unique-constraint

我有sql升级脚本,它有许多sql语句(DDL,DML)。当我在SQL开发人员中运行此升级脚本时,它会成功运行。我还在底部提交的脚本中提供。除了唯一索引约束之外,我可以在运行此升级脚本后看到数据库中的所有更改。当我插入几个重复的记录时,它表示违反了唯一约束。这意味着该表具有唯一约束。但我不知道为什么我不能在oracle sql开发人员中查看这些约束。我可以查看其他DDL更改。我不知道是否有任何设置可以在oracle sql开发人员中查看。

CREATE UNIQUE INDEX "RATOR_MONITORING"."CAPTURING_UK1" ON "RATOR_MONITORING"."CAPTURING" ("DB_TABLE"); 
CREATE UNIQUE INDEX "RATOR_MONITORING_CONFIGURATION"."BRAND_UK1" ON "RATOR_MONITORING_CONFIGURATION"."BRAND" ("NAME");
CREATE UNIQUE INDEX "RATOR_MONITORING_CONFIGURATION"."BRAND_BUSINESS_PROCESS_UK1" ON "RATOR_MONITORING_CONFIGURATION"."BRAND_BUSINESS_PROCESS" ("BRAND_ID", "BP_ID");
CREATE UNIQUE INDEX "RATOR_MONITORING_CONFIGURATION"."BRAND_ENGINE_UK1" ON "RATOR_MONITORING_CONFIGURATION"."BRAND_ENGINE" ("BRAND_ID", "ENGINE_ID");

3 个答案:

答案 0 :(得分:2)

正如Hocevar指出的那样,如果你创建了一个索引

 create unique index test_ux on test(id);

您可以在表属性的“索引”选项卡中看到它(不在“约束”选项卡中)。

请注意,此处不需要COMMIT,它在每个DDL语句中都是隐含的。更常见的问题来源是SQL Developer中陈旧的元数据,即缺少REFRESH(用户或表节点上的ctrl R)。

如果要定义约束,添加以下语句,将重用以前定义的索引

 alter table test add constraint test_unique unique(id) using index test_ux;

请参阅Documentation

中有关该选项的进一步讨论

答案 1 :(得分:1)

我假设您正在尝试在sql developer的正确选项卡中查找表上的索引。如果您无法在那里看到索引,一个原因可能是您的用户(您登录的用户)没有适当的权限来查看索引。

答案 2 :(得分:1)

如果您没有收到任何错误,解决方案非常简单而且乏味。 SQL Developer不会刷新他提取的结构。请在Connections视图中按Refresh蓝色图标(或使用Ctrl-R),或再次断开连接(或重新启动SQL Developer)以查看结构中的更改。