Oracle sql 开发人员中未显示 DDL 更改
DDL changes not showing in Oracle sql developer
我有 sql 升级脚本,其中有许多 sql 语句(DDL、DML)。当我 运行 这个升级脚本在 SQL 开发人员中时,它运行 successufully.I 也在我的底部提交的脚本中提供。在 运行 这个升级脚本之后,我可以看到数据库中的所有更改,唯一索引约束除外。当我插入一些重复记录时,它说违反了唯一约束。这意味着 table 具有独特的约束。但我不知道为什么我无法在 oracle sql 开发人员中查看此约束。其他 DDL 更改我可以 view.I 不知道是否有任何设置可以在 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");
正如 A Hocevar 指出的那样,如果您创建索引
create unique index test_ux on test(id);
您可以在 table 属性的索引选项卡中看到它(而不是在约束选项卡中)。
请注意这里不需要 COMMIT,它在每个 DDL 语句中隐式完成。更常见的问题来源是 SQL 开发人员中过时的元数据,即缺少 REFRESH(在用户或 table 节点上按 R)。
如果要定义约束,添加后面的语句,会重用之前定义的索引
alter table test add constraint test_unique unique(id) using index test_ux;
请参阅 Documentation
中有关该选项的进一步讨论
我假设您正在尝试在 sql 开发人员的正确选项卡中查找 table 上的索引。如果您在那里看不到索引,原因之一可能是您的用户(您登录的用户)没有查看索引的适当权限。
如果没有报错,解决方法很简单,也很繁琐。 SQL 开发者没有刷新他获取的结构。请在连接视图中按刷新蓝色图标(或使用 Ctrl-R)或断开连接并再次连接(或重新启动 SQL Developer)以查看结构更改。
我有 sql 升级脚本,其中有许多 sql 语句(DDL、DML)。当我 运行 这个升级脚本在 SQL 开发人员中时,它运行 successufully.I 也在我的底部提交的脚本中提供。在 运行 这个升级脚本之后,我可以看到数据库中的所有更改,唯一索引约束除外。当我插入一些重复记录时,它说违反了唯一约束。这意味着 table 具有独特的约束。但我不知道为什么我无法在 oracle sql 开发人员中查看此约束。其他 DDL 更改我可以 view.I 不知道是否有任何设置可以在 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");
正如 A Hocevar 指出的那样,如果您创建索引
create unique index test_ux on test(id);
您可以在 table 属性的索引选项卡中看到它(而不是在约束选项卡中)。
请注意这里不需要 COMMIT,它在每个 DDL 语句中隐式完成。更常见的问题来源是 SQL 开发人员中过时的元数据,即缺少 REFRESH(在用户或 table 节点上按 R)。
如果要定义约束,添加后面的语句,会重用之前定义的索引
alter table test add constraint test_unique unique(id) using index test_ux;
请参阅 Documentation
中有关该选项的进一步讨论我假设您正在尝试在 sql 开发人员的正确选项卡中查找 table 上的索引。如果您在那里看不到索引,原因之一可能是您的用户(您登录的用户)没有查看索引的适当权限。
如果没有报错,解决方法很简单,也很繁琐。 SQL 开发者没有刷新他获取的结构。请在连接视图中按刷新蓝色图标(或使用 Ctrl-R)或断开连接并再次连接(或重新启动 SQL Developer)以查看结构更改。