创建视图触发器

-------创建表----------

create table student( 
sid number primary key, 
sname varchar2(20), 
c_id number 
); 
create table class( 
cid number primary key, 
cname varchar2(20) 
); 

 ----创建视图----

create or repalce stu_cl_v 
as 
select s.sid,s.sname,s.c_id,c.cid,c.cname 
from student s left join class c on s.c_id=c.cid; 

--------创建触发器--------

create or replace stu_cl_v_t 
instead of insert or update or delete on stu_cl_v 
for each row 
declare 
temp int; 
begin 
if inserting then 
  select 0 into temp from dual; 
  select cout(1) into temp from student s where s.sid=:new.sid; 
  if temp0 then 
   update student s set s.sname=:new.sname,s.c_id=:new.c_id where s.sid=:new.sid; 
  else 
   insert into student values(:new.sid,:new.sname,:new.c_id); 
  end if; 
elsif updating then 
  update student s set s.sname=:new.sname,s.c_id=:new.c_id where s.sid=:new.sid; 
elsif deleting then 
  delete from student s where s.sid=:old.sid; 
end if; 
end; 

 ------测试------- 

insert into stu_cl_v(sid,sname,c_id) value(1,'test1',1); 

update stu_cl_v set ... where ... 

delelte from stu_cl_v where ....  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值