我有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");
答案 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;
中有关该选项的进一步讨论
答案 1 :(得分:1)
我假设您正在尝试在sql developer的正确选项卡中查找表上的索引。如果您无法在那里看到索引,一个原因可能是您的用户(您登录的用户)没有适当的权限来查看索引。
答案 2 :(得分:1)
如果您没有收到任何错误,解决方案非常简单而且乏味。 SQL Developer不会刷新他提取的结构。请在Connections视图中按Refresh蓝色图标(或使用Ctrl-R),或再次断开连接(或重新启动SQL Developer)以查看结构中的更改。