oracle级联更新与级联删除
2024-08-29 11:18:43
Oracle级联删除:可以使用外键约束来实现,建立表的主外键关系,给列设置级联删除。如下:
——创建了CLASS表,并设置ID字段为主键。
-- Create table
create table CLASS
(
ID VARCHAR2(2) not null,
CLASS_NAME VARCHAR2(20)
)
alter table CLASS
add constraint PK_CLASS primary key (ID)
——创建了STUDENTS表,并设置ID字段为主键,CLASS_ID为外键且有级联删除。
-- Create table
create table STUDENTS
(
ID VARCHAR2(4) not null,
CLASS_ID VARCHAR2(2) not null,
STU_NAME VARCHAR2(20),
STU_AGE NUMBER
) alter table STUDENTS
add constraint PK_STU primary key (ID) alter table STUDENTS
add constraint FK_STU foreign key (CLASS_ID)
references CLASS (ID) on delete cascade;
这样删除了班级ID,所属的学生都会被删除。(转自https://www.cnblogs.com/milo-xie/archive/2011/07/17/2108939.html)
级联更新:只能使用触发器来实现,如下:
--首先创建实例表book和type
create table type(
tid number(4) primary key,
tname varchar2(10) not null
)
/
create table book(
bid number(4) primary key,
bname varchar2(20) not null,
tid number(4),
)
/
--建立外键约束
alter table book add constraint book_type foreign key(tid) references type(tid);
--插入测试数据
insert into type values(1,'历史');
insert into type values(2,'文学');
insert into book values(1,'红楼梦',2);
insert into book values(2,'西游记',2);
select * from type;
select * from book;
--创建级联更新触发器
create or replace trigger tri_type
after update of tid on type
for each row
begin
if(:old.tid<>:new.tid) then
update book set tid=:new.tid where tid=:old.tid;
end if;
end;
--进行更新操作,测试触发器是否起作用
update type set tid=3 where tid=2;
(转自http://blog.sina.com.cn/s/blog_8e5087d10102wgh6.html)
最新文章
- Mac通过终端显示和隐藏 隐藏文件
- Linux_RPM_查询
- mxnet环境搭建随记
- JVM的classloader(转)
- SA 的参数
- 跨平台网络库(采用C++ 11)
- css3学习笔记之按钮
- 配置ASP.NET Nhibernate
- SQL复制表及表结构
- ListBox控件例子
- JVM学习(1)——通过实例总结Java虚拟机的运行机制(转)
- Appium移动自动化测试(五)--app控件获取之uiautomatorviewer
- OpenShift实战(七):OpenShift定制镜像S2I
- java之Spring(AOP)前奏-动态代理设计模式(上)
- 前端项目中常用es6知识总结 -- 箭头函数及this指向、尾调用优化
- RN 各种小问题
- JavaScript frame跨域获取元素、修改元素属性、调用其他frame页面方法
- Android.os.SystemClock
- List 循环删除 指定元素的 方法
- npm包