Oracle与MySQL删除字段时对索引与约束的处理对照
2008-06-05 12:43:06 来源:WEB开发网不知道有多少人清楚的知道,在Oracle中,如果一个复合索引,假定索引(a,b,c)三个字段,删除了(包括unused)其中一个字段,Oracle会怎么处理这个索引。同样,如果是约束,Oracle又怎么处理?
用oracle为例子,我又拿mysql做了一个对比,看看mysql是怎么处理这个问题的。我这里不讨论谁好谁差,只是希望大家知道其中的差别与细节而已。
我们先看Oracle的例子,我们创建一个表,然后在上面创建一个约束,创建一个索引:
SQL10G>createtabletest(aint,bint,cint);
Tablecreated.
SQL10G>altertabletestaddconstraintpk_testprimarykey(a,b);
Tablealtered.
SQL10G>createindexind_testontest(b,c);
Indexcreated.
然后,我们检查刚才创建的约束与索引
SQL10G>selectt.constraint_name,c.constraint_type,t.column_name,t.position,c.status,c.validated
2fromuser_cons_columnst,user_constraintsc
3wherec.constraint_name=t.constraint_name
4andc.constraint_type!='C'
5andt.table_name='TEST'
6orderbyconstraint_name,position;
CONSTRAINT_NAMECCOLUMN_NAMEPOSITIONSTATUSVALIDATED
------------------------------------------------------------
PK_TESTPA1ENABLEDVALIDATED
PK_TESTPB2ENABLEDVALIDATED
SQL10G>selectt.index_name,t.column_name,t.column_position,i.status
2fromuser_ind_columnst,user_indexesi
3wheret.index_name=i.index_name
4andt.table_name='TEST'
5*orderbyindex_name,column_position
INDEX_NAMECOLUMN_NAMECOLUMN_POSITIONSTATUS
-------------------------------------------------
IND_TESTB1VALID
IND_TESTC2VALID
- ››oracle 恢复误删除的表和误更新的表
- ››MySQL定时执行存储过程
- ››mysql数据导入sqlserver数据库方法
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››删除win8中window.old所有文件
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››MySQL获取系统性能和状态
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››MySQL 查询结果以百分比显示
- ››oracle性能34条优化技巧
更多精彩
赞助商链接