oracle数据库删除主键约束时是否删除索引?
问题删除主键时是否会同时自动删除索引答案是否删除索引取决于索引是创建主键时自动创建的还是创建主键前手工创建的。如果期望删除主键时同时删除索引安全的做法是增加drop index选项。另外如果为了防止因存在外键引用而删除失败可以增加cascade选项。以下内容在PLSQLDeveloper中亲测为了代码便于阅读放到eclipse中做了格式调整。测试无drop index/keepindex选项时的情况手工创建索引后增加主键--建表SQLdroptabletest;droptabletestORA-00942: 表或视图不存在SQLcreatetabletest(IDINTEGERnotnull);Table created--建主键SQLcreateuniqueindexPK_TESTonTEST(ID);Index createdSQLaltertableTEST2addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--查看索引SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST--删除主键SQLaltertableTESTdropprimarykey;Table altered--再查看索引没有被删掉SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST增加主键自动创建索引--建表SQLdroptabletest;Table droppedSQLcreatetabletest(IDINTEGERnotnull);Table created--添加主键自动创建索引SQLaltertableTEST2addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--查看索引SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST--删除主键SQLaltertableTESTdropprimarykey;Table altered--再次查看索引已经删除SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------测试drop index选项时的情况手工创建索引,后增加主键--建表SQLdroptabletest;Table droppedSQLcreatetabletest(IDINTEGERnotnull);Table created--建主键SQLcreateuniqueindexPK_TESTonTEST(ID);Index createdSQLaltertableTEST2addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--查看索引SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST--删除主键SQLaltertableTESTdropprimarykeydropindex;Table altered--再次查看索引已经被删除SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------增加主键,自动创建索引--建表SQLdroptabletest;Table droppedSQLcreatetabletest(IDINTEGERnotnull);Table created--建主键SQLaltertableTEST2addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--查看索引SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST--删除主键SQLaltertableTESTdropprimarykeydropindex;Table altered--再次查看索引已经被删除SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------测试keep index选项时的情况手工创建索引,后增加主键--建表SQLdroptabletest;Table droppedSQLcreatetabletest(IDINTEGERnotnull);Table created--建主键SQLcreateuniqueindexPK_TESTonTEST(ID);Index createdSQLaltertableTEST2addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--查看索引SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TESTSQL--删除主键SQLaltertableTESTdropprimarykeykeepindex;Table altered--再次查看索引被保留SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST增加主键,自动创建索引--建表SQLdroptabletest;Table droppedSQLcreatetabletest(IDINTEGERnotnull);Table created--建主键SQLaltertableTEST2addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--查看索引SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST--删除主键SQLaltertableTESTdropprimarykeykeepindex;Table altered--再次查看索引依然被保留SQLselectindex_namefromuser_indexeswhereindex_namePK_TEST;INDEX_NAME------------------------------PK_TEST测试增加drop index选项时使用cascade关键字的作用--新建table1SQLcreatetabletable1(IDINTEGERnotnull);Table created--新增主键约束SQLaltertabletable1addCONSTRAINTPK_TESTPRIMARYKEY(ID)usingindex;Table altered--插入三个值123SQLinsertintotable1values(1);1 row insertedSQLinsertintotable1values(2);1 row insertedSQLinsertintotable1values(3);1 row insertedSQLselect*fromtable1;ID---------------------------------------123--新建table2SQLcreatetabletable2(ID1INTEGERnotnull,ID2INTEGERnotnull);Table created--新增table2主键约束SQLaltertabletable2addconstraintpk_table2primarykey(ID1)usingindex;Table altered--新增table2外键约束其id2这一列指向table的idSQLaltertabletable2addconstraintfk_id2foreignkey(ID2)referencestable1(id);Table altered--向table2插入三行值(1,1),(2,2),(3,3)SQLinsertintotable2values(1,1);1 row insertedSQLinsertintotable2values(2,2);1 row insertedSQLinsertintotable2values(3,3);1 row insertedSQLselect*fromtable2;ID1 ID2--------------------------------------- ---------------------------------------1 12 23 3--查看table2的约束可以看到有主键和外键SQLselect*fromuser_constraints awherea.table_nameTABLE2;OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RULE STATUSDEFERRABLEDEFERRED VALIDATED GENERATED BAD RELY LAST_CHANGE INDEX_OWNER INDEX_NAME INVALID VIEW_RELATED------------------------------------------------------------ ------------------------------ --------------- ------------------------------ -------------------------------------------------------------------------------- ------------------------------------------------------------ ------------------------------ ----------- -------- -------------- --------- ------------- -------------- --- ---- ----------- ------------------------------ ------------------------------ ------- --------------VOUDATA SYS_C0097617 C TABLE2ID1ISNOTNULLENABLEDNOTDEFERRABLEIMMEDIATEVALIDATED GENERATED NAME 2014/6/10 1VOUDATA SYS_C0097618 C TABLE2ID2ISNOTNULLENABLEDNOTDEFERRABLEIMMEDIATEVALIDATED GENERATED NAME 2014/6/10 1VOUDATA PK_TABLE2 P TABLE2 ENABLEDNOTDEFERRABLEIMMEDIATEVALIDATEDUSERNAME 2014/6/10 1 VOUDATA PK_TABLE2VOUDATAFK_ID2R TABLE2 VOUDATA PK_TESTNOACTIONENABLEDNOTDEFERRABLEIMMEDIATEVALIDATEDUSERNAME 2014/6/10 1--删除table1主键不使用cascade关键字此时报错SQLaltertabletable1dropprimarykeydropindex;altertabletable1dropprimarykeydropindexORA-02273: 此唯一/主键已被某些外键引用--删除table1主键使用cascade关键字不报错SQLaltertabletable1dropprimarykeycascadedropindex;Table altered--查看table2的约束此时外键已经被干掉了SQLselect*fromuser_constraints awherea.table_nameTABLE2;OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RULE STATUSDEFERRABLEDEFERRED VALIDATED GENERATED BAD RELY LAST_CHANGE INDEX_OWNER INDEX_NAME INVALID VIEW_RELATED------------------------------------------------------------ ------------------------------ --------------- ------------------------------ -------------------------------------------------------------------------------- ------------------------------------------------------------ ------------------------------ ----------- -------- -------------- --------- ------------- -------------- --- ---- ----------- ------------------------------ ------------------------------ ------- --------------VOUDATA SYS_C0097617 C TABLE2ID1ISNOTNULLENABLEDNOTDEFERRABLEIMMEDIATEVALIDATED GENERATED NAME 2014/6/10 1VOUDATA SYS_C0097618 C TABLE2ID2ISNOTNULLENABLEDNOTDEFERRABLEIMMEDIATEVALIDATED GENERATED NAME 2014/6/10 1VOUDATA PK_TABLE2 P TABLE2 ENABLEDNOTDEFERRABLEIMMEDIATEVALIDATEDUSERNAME 2014/6/10 1 VOUDATA PK_TABLE2--查看table2的数据没有变化说明只是外键关联去掉了引用table1的数据保留SQLselect*fromtable2;ID1 ID2--------------------------------------- ---------------------------------------1 12 23 3由此可见若主键被其他表引用做外键删除主键并drop index若不使用cascade关键字则执行会报错而使用cascade关键字会将其关联的外键同时删除。所在这种情况下cascade关键字还是谨慎使用在完全考虑到了外键关联不需要时再使用否则可能在未知的情况下将某些外键关联删除并且在调整过主键后忘记重新增加外键执行时报错总好过不知情的情况下少了外键关联。

相关新闻

Spring Boot+Vue+MySQL前后端分离商城系统开发与毕业设计指南

Spring Boot+Vue+MySQL前后端分离商城系统开发与毕业设计指南

简介:一份基于JavaSpring BootVueMySQL的乐乐农产品销售系统完整项目,适合毕业设计、课程设计或期末大作业复用,项目已通过严格调试、可直接运行。压缩包共871个文件,约27.67MB,包含Java/Vue前后端源码、sql数据库脚本…

2026/10/7 3:18:33 阅读更多 →
2026年Java面试基础题攻略:228道题集与高效复习法

2026年Java面试基础题攻略:228道题集与高效复习法

1. 2026年的Java面试,为什么还需要一套基础题集这几年总有一种声音:“面试都在问场景设计、问源码、问分布式,谁还考基础题?”如果你真信了这句话,大概率会在简历筛选通过后的第一轮技术面里摔跟头。我在2025年下半年到…

2026/10/7 3:18:33 阅读更多 →
Tduck开源表单系统:从部署到二次开发的完整实践指南

Tduck开源表单系统:从部署到二次开发的完整实践指南

简介:这是一份填鸭Tduck开源表单在线收集系统的项目源码包,面向需要自建信息反馈与数据收集平台的企业开发者、产品运营及技术维护人员。系统基于B/S架构,围绕新建表单、表单设置、反馈统计三大模块展开,支持拖拽式表单设计、多渠…

2026/10/7 3:18:32 阅读更多 →

最新新闻

9款AI写论文哪个好?aigcbiye aigcbiye官网www.aigcbiye.com 微信公众号搜一搜 aigcbiye:一份“文献打假人”的解剖报告

9款AI写论文哪个好?aigcbiye aigcbiye官网www.aigcbiye.com 微信公众号搜一搜 aigcbiye:一份“文献打假人”的解剖报告

aigcbiye官网 微信公众号搜一搜 aigcbiye 如果你最近在知网上搜过论文,可能会注意到一个有意思的现象:2025年之后发表的部分论文,参考文献里开始出现一些“幽灵条目”——点开DOI,跳转到的是一篇完全不相关的牙科论文&#xff1b…

2026/10/8 6:43:41 阅读更多 →
孩子不愿跟你说话?不是你沟通差,是你错过了这些“隐藏信息”

孩子不愿跟你说话?不是你沟通差,是你错过了这些“隐藏信息”

你有没有这样的经历——明明想好好跟娃聊一聊在学校发生了什么,结果三句话问下去: “今天开不开心?” “还行。” “老师有没有表扬你?” “没有。” “有没有交到什么新朋友?” “……嗯。”然后,没有然后…

2026/10/8 6:43:41 阅读更多 →
5款AI写论文哪个好:一位测评博主的“学术工具解剖报告”

5款AI写论文哪个好:一位测评博主的“学术工具解剖报告”

aigcbiye官网 微信公众号搜一搜 aigcbiye 我做教育测评这行有个习惯:不测“最好用的”,只测“最不敢让人偷懒的”。因为写论文这件事,工具越顺手,人越容易放弃思考。但反过来,工具太“笨”,你光跟它较劲的…

2026/10/8 6:43:41 阅读更多 →
Claude Code 延迟工具(Deferred Tools)加载机制:System Reminder 与 ToolSearch 协作原理解析

Claude Code 延迟工具(Deferred Tools)加载机制:System Reminder 与 ToolSearch 协作原理解析

文档提示工程人工智能 【免费下载链接】claude-code-system-prompts All parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, s…

2026/10/8 6:43:41 阅读更多 →
eFuse+MCU实现嵌入式电源保护:浪涌过流过压全挡住

eFuse+MCU实现嵌入式电源保护:浪涌过流过压全挡住

先把话说在前面:干嵌入式硬件这几年,我吃到最大的亏基本都跟电源有关。有一次科室内测试一块控制板,同事图省事拿了根没包好的电源线插,瞬间接反,板子直接冒烟;还有一次现场热插拔,前端插头都打…

2026/10/8 6:43:40 阅读更多 →
Uptime Kuma + Server酱:微信实时接收服务器告警

Uptime Kuma + Server酱:微信实时接收服务器告警

背景 服务器上跑了几个服务,平时没人盯着。有天半夜 Nginx 挂了,第二天早上才发现,网站挂了 8 小时。 想做到:服务一挂,微信立刻收到通知。 原因 服务器不会主动告诉你它病了。 要让它"会说话",需…

2026/10/8 6:42:40 阅读更多 →

日新闻

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:03 阅读更多 →
AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:06 阅读更多 →
Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:07 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:13 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →