Oracle
数据库里可能因索引与约束建立的依赖关系不同,在级联删除约束后索引对象可能仍然存在
示例:
--
建表
create table test_tmp
as
select rownum as task_id from dual connect by rownum <= 10 ;
--
先建立索引
create unique index PK_TASK_ID on test_tmp(task_id);
--
再在基于此索引建立主键约束
alter table test_tmp add constraint PK_TASK_ID primary key (task_id) using index PK_TASK_ID;
--
级联删除约束
alter table test_tmp drop constraint PK_TASK_ID cascade ;
--
此时发现仅仅只删除了主键约束,索引却保留了下来
select * from all_objects t where t.object_name= 'PK_TASK_ID' ; -- 索引返回
select * from all_constraints t where t.constraint_name= 'PK_TASK_ID' ; -- 无结果
--
解决办法,无论索引是否事先存在都可以成功执行
alter table test_tmp drop constraint PK_TASK_ID cascade drop index ;
有时在丢掉约束后,发现主键字段依然保持着非空属性,这也意味约束建立之前,此字段被设置成了非空;若索引是基于主键约束而生成的,那直接删除约束后索引与非空属性也随即丢掉了
分享到:
相关推荐
这是一个ajax+jQuery+ssh+oracle的myeclipse级联实例,可以直接导入工具后运行。
方法一:创建约束时设定级联删除(但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除)SQL语句: 代码如下:CREATE TABLE “U_WEN_BOOK”.”FARTAB” (“FAR_ID” NUMBER(10) NOT NULL,“FAR_NAME” ...
这是Adf多表级联菜单实例其中保存创建Criteria知识,多表关系,以及在Vo中使用vo当前字段过滤结果
利用sql server自带的级联删除、级联更新功能,即其外键约束途径 alter table dbo.C add constraint FK_C_A_AID foreign key(AID) references dbo.A(AID) on delete cascade on update cascade go alter table dbo.C...
mysql级联更新和级联删除,区分有级联和没级联操作的区别之处
在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点ID的表 start with selfid=id //给定一个startid(字段名为子接点ID,及开始的ID号) connect by prior ...
hibernate many-to-many级联保存,级联更新,级联删除
qt下的sqlite3实现级联删除,在vs2010 + qt5.40 + win7下编译通过
SQL server创建触发器实现级联删除
MSserver自关联表的级联删除,使用触发器对自关联树形结构的表进行级联删除,文有几点教训,有编写脚本的初衷。
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单
联系通过写存储过程进行级联删除,在实际开发中总结的
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单...
在数据库MySQL中利用外键实现级联删除、更新等方面的内容。有兴趣可以看看。。
菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联
这是js控制的html网页的级联菜单,与数据库相连,从数据库中读取内容。
JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果
sql存在检测、建库、建表、约束、外键、级联删除[文].pdf
iBATIS 级联iBATIS 级联iBATIS 级联