`
myharmony
  • 浏览: 108124 次
  • 性别: Icon_minigender_1
  • 来自: 中山市
社区版块
存档分类
最新评论

Oracle中 级联删除和更新

阅读更多
在Oracle中使用on delete cascade 可以实现级联删除的操作
代码如下:

--create table a and b
Create Table department (dept_id   number (4) Not Null Primary Key, name      varchar2 (10), importdate date default sysdate);

Create Table employee (
                       emp_id       number (4) Not Null Primary Key,
                       dept_id      number (4),
                       name         varchar2 (10),
                       importdate   date default sysdate
                      );

Alter Table employee Add Constraint emp_fk Foreign Key (dept_id) References department(dept_id) on delete cascade;
commit;

级联更新如下:
create table a(
id number not null primary key deferrable,
modifydate date default sysdate
);

create table b(
id number not null primary key,
a_id number
constraint a_id_fk foreign key(a_id) references a(id) on delete cascade
);

create or replace trigger trg_b_a_id 
after update of id on a for each row
begin
  update b set a_id=:NEW.id where a_id=:OLD.id;
end;

SQL> select * from b;
        ID       A_ID
---------- ----------
         1          1
         2          4
         3          3


SQL> select * from a;
        ID NAME
---------- -------------
         1 test_1
         4 test_3
         3 test_2

SQL> update a set id=5 where id=1;

更新基本表后:
SQL> select * from a;
        ID NAME
---------- ------------
         5 test_1
         4 test_3
         3 test_2


SQL> select * from t;
        ID       A_ID
---------- ----------
         1          5
         2          4
         3          3
1
0
分享到:
评论

相关推荐

    Oracle数据库中的级联查询、级联删除、级联更新操作教程

    Oracle数据库中的级联查询、级联删除和级联更新是数据库设计中常用的操作,它们用于在多表关联的关系型数据库中实现数据的联动处理。在Oracle中,这些操作主要涉及外键约束和触发器。 首先,级联查询是通过自连接来...

    解析Oracle中多表级联删除的方法

    在Oracle数据库中,多表级联删除是一种常见的需求,特别是在数据关系复杂的环境中。级联删除允许在删除一个表中的记录时,自动删除依赖于该记录的其他表中的相关记录。以下将详细介绍三种在Oracle中实现多表级联删除...

    oracle表空间替换转移级联删除脚本生成工具

    1.可以扫描oracle导出的dmp文件中的表空间信息,然后替换为指定的表空间名,要以将多个表空间名转换为一个表空间名 2.可以进行常规的一些导入导出新建数据库操作 3.可以生成包含子表的按条件删除的脚本,维护数据时...

    oracle中如何创建约束?

    - **CASCADE**:级联删除/更新。如果删除或更新父表中的记录,则自动删除/更新子表中所有相关的记录。 - **SET NULL**:设置为NULL。如果删除父表中的记录,则将子表中的相应外键字段设置为NULL。 - **NO ACTION**:...

    oracle中的权限

    在Oracle数据库系统中,权限管理是确保数据安全性与完整性的重要机制。权限的分配与管理是数据库管理员(DBA)和系统管理员的核心职责之一。本文将深入探讨Oracle中的权限概念、类型以及如何进行权限的授予与回收。 ...

    oracle_dynamic_sql.rar_Dynamic SQL ORAC_oracle_oracle dynam_orac

    本文将深入探讨动态SQL的使用及其在级联删除中的应用。 首先,让我们理解什么是动态SQL。在静态SQL中,SQL语句在编译时就已经确定。然而,动态SQL允许我们在程序执行时构建SQL语句,这意味着SQL的结构可以在运行时...

    oracle(浪潮内部培训)

    通过使用触发器,你可以实现复杂的数据完整性规则,比如级联更新或删除,或者在数据更改前后执行某些业务逻辑。在培训中,你将学习如何创建、修改和删除触发器,以及如何调试和优化触发器性能。 三、存储过程 存储...

    oracle与sql_server的区别

    在处理外键约束时,SQL Server允许级联删除和级联更新,而Oracle仅支持级联删除。这意味着在SQL Server中,当主表中的记录被删除或更新时,依赖的子表记录也可以自动进行相应的更新或删除,提供了更强大的数据完整性...

    ORACLE与SQLSERVER的区别

    SQL Server 的外键约束支持级联删除和级联更新,而 Oracle 只支持级联删除。创建外键约束时,两个系统都有相应的语法,但在级联操作上有所不同。 以上只是 Oracle 和 SQL Server 在几个关键方面的对比,实际上,...

    10_传智播客JPA详解_JPA中的一对多双向关联与级联操作

    在Java世界中,Java Persistence API(JPA)是Oracle公司推出的用于对象关系映射(ORM)的标准框架,它简化了数据库操作,使开发者能够用Java对象来操作数据库记录。本教程将深入探讨JPA中的一对多双向关联及级联...

    Oracle数据库用户角色、表空间创建、删除命令

    - `CASCADE`:级联删除,即删除用户的同时也会删除该用户创建的所有对象,包括表、视图等。 #### 删除表空间 删除表空间前需确保该表空间未被任何用户使用: ```sql DROP TABLESPACE BCC INCLUDING CONTENTS AND ...

    Oracle sql宝典

    Oracle SQL 是一种用于管理Oracle数据库的强大工具,涵盖了创建和操作数据库对象、查询和更新数据、管理用户权限等众多功能。以下是一些Oracle SQL的关键知识点: 1. **创建用户**: 使用 `CREATE USER` 语句可以...

    Oracle基本语句

    在 Oracle 中,级联删除需要使用 ALTER TABLE 语句,例如: ```sql ALTER TABLE stuinfo ADD CONSTRAINT stu_fk FOREIGN KEY (stu_id) REFERENCES students(id) ON DELETE CASCADE; ``` 这条语句添加了一个名为 stu_...

    oracle创建用户及导入环境dmp

    删除用户可以使用`DROP USER`命令,如果用户有相关的对象(如表、视图等),需要使用`CASCADE`关键字来级联删除这些对象。 ```sql DROP USER 用户名 CASCADE; ``` 在示例中,首先执行了删除用户`webbas`的操作: ```...

    韩顺平老师oracle视频教程听课笔记

    `CASCADE`选项用于级联删除依赖对象。 - **用户管理综合案例** - 创建的新用户默认没有任何权限,需要授予相应的权限。 - 示例:`GRANT CONNECT TO xiaoming;` - 注意:`CONNECT`不是一个简单的权限,而是一个...

    Oracle学习笔记 Oracle学习笔记

    `cascade`选项用于级联删除依赖于该用户的对象。 2. **密码管理** - 修改密码:使用`.password`命令修改密码,具体操作可能需要查看上下文环境中的实现细节。 3. **权限管理** - 权限授予:`grant permission to...

    oracle10g教程从入门到精通

    - 如果用户已经创建了表等对象,删除时需要带上 `cascade` 参数以级联删除所有依赖的对象。 - **用户权限管理** - 创建的新用户默认没有任何权限,需要通过 `grant` 命令为其分配相应的权限。 - 示例:`grant ...

Global site tag (gtag.js) - Google Analytics