知识大全 解析Oracle中多表级联删除的方法
Posted 知
篇首语:采得百花成蜜后,为谁辛苦为谁甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 解析Oracle中多表级联删除的方法相关的知识,希望对你有一定的参考价值。
解析Oracle中多表级联删除的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
创建数据库时为了防止其他人不小心删除操作错误 所有的外键都没有加级联删除 哪知 不知什么时候自己入了一批错误的数据进去 入库使用的是软件自动的 一下点错给自己带来无尽麻烦啊 删除就不好办了表间的关系比较复杂 数据量又比较多 一个个删绝对会出大问题 于是实验了几种解决的办法 现小结一下 方法一 创建约束时设定级联删除 (但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除) SQL语句
复制代码 代码如下: CREATE TABLE "U_WEN_BOOK" "FARTAB" ("FAR_ID" NUMBER( ) NOT NULL "FAR_NAME" VARCHAR ( ) "OTHER_NAME" VARCHAR ( ) CONSTRAINT "PK_FER" PRIMARY KEY("FAR_ID")) CREATE TABLE "U_WEN_BOOK" "CHILTAB" ("CHIL_ID" NUMBER( ) NOT NULL "CHIL_NAME" VARCHAR ( ) "CHIL_OTHER" VARCHAR ( ) "FAR_ID" NUMBER( ) NOT NULL CONSTRAINT "PK_CHIL" PRIMARY KEY("CHIL_ID") CONSTRAINT "FK_CHIL" FOREIGN KEY("FAR_ID") REFERENCES "U_WEN_BOOK" "FARTAB"("FAR_ID") ON DELETE CASCADE)方法二 创建约束时没有使用级联删除 在需要使用级联删除时 删除原来的外键约束 重建带级联删除的约束 (实验证明完全可行 注意需要对已经存在的数据进行验证 否则新建的约束对原有数据不具备效率 默认是验证的 若强制要求不验证 使用NOVALIDATE关键词 还有外键引用的只能是唯一主键) SQL语句
复制代码 代码如下: ALTER TABLE "U_WEN_BOOK" "GCHILTAB " DROP CONSTRAINT "FK_G " ALTER TABLE "U_WEN_BOOK" "GCHILTAB " ADD (CONSTRAINT "FK_G " FOREIGN KEY() REFERENCES "U_WEN_BOOK" "CHILTAB"() ON DELETE CASCADE) (这样就可以级联删除了 删除完后 如果不放心这样的约束条件 并且不嫌麻烦可以再重建为不带级联删除等外键约束 防止误操作)方法三 使用触发器(创建时没有级联删除) (比较灵活 可以根据自己编写的程序进行 引用的不是唯一主键也可以) ( )创建表及插入数据 SQL语句
复制代码 代码如下: create table orderCombine ( O_Id VARCHAR ( ) not null OrderId VARCHAR ( ) not null FormerId VARCHAR ( ) not null constraint PK_ORDERBINE primary key (FormerId) ); create table VIPForm ( V_Id VARCHAR ( ) not null IsValid CHAR( ) default not null Constraint fk_vipform foreign key(V_id) references orderbine(formerid) ); insert into orderCombine values( ); insert into orderCombine values( ); insert into vipform values( ); insert into vipform values( ); insert into vipform values( );结果 ( )创建触发器 SQL
复制代码 代码如下: CREATE OR REPLACE TRIGGER "FG " "TER_OV" BEFORE DELETE ON "ORDERBINE" FOR EACH ROW BEGIN DELETE FROM VIPForm WHERE VIPForm V_Id=:OLD FormerId; END;( )删除及结果 SQL
复制代码 代码如下: DELETE FROM "FG " "ORDERBINE" WHERE FormerId =方法四 若表间关系简单(就两张表) 涉及到的记录也很少(总共就几行记录) 直接删除子表中的相关记录 再删除父表中的记录即可 (前面的方法在涉及数据量较大以及表间关系比较复杂时才有效率上的优势 简单的直接删除来的更快) 如上例中 直接删除 SQL语句
复制代码 代码如下: cha138/Article/program/Oracle/201311/19027相关参考
MySQL中多表删除方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果您是才接触MySQL
有两张表结构如下 Java代码 t_item &n
解析Oracle查询和删除JOB的SQL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对
ORACLE多表关联UPDATE语句 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了方便起见
Oracle多表关联更新多个字段带条件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! updat
Oracle多表创建的视图insert解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 单
在业务处理过程中经常会碰到将业务数据按照条件分别插入不同的数据表的问题按照传统的处理方式需要分条件执行多次检索后分别插入不同的表单这样因为执行了重复的检索造成cpu和内存的浪费从oraclei开始
(一)子查询select*fromtableA whereidoperator(select*fromtableAawhereaid=) operaor 单条记录子查询(
Oracle强制删除用户 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 有时候删除已经连接的Or
Oracle删除归档日志实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 当Oracle归档日