給dept表建行級觸發器,操作dept表的同時更新它的副表dept2
增刪改查時兩張表資料同步
-- 建立dept2為dept的副表create table dept2 as select * from dept;
-- 建立觸發器,在修改dept表時兩張表資料同步
create or replace trigger t_dept
after insert or delete or update
on dept
for each row
declare
begin
if inserting then
insert into dept2 values(:new.deptno,:new.dname,:new.loc);
elsif deleting then
delete from dept2 where deptno=:old.deptno;
else
update dept2 set dname=:new.dname,loc=:new.loc where deptno=:old.deptno;
end if;
end;
-- 測試資料
select * from dept;
insert into dept(deptno) values(50);
update dept set dname='newname',loc='newloc' where deptno=50;
delete from dept where deptno=50;
select * from dept2;
有班級表和學生表,刪除班級表中沒有在學生表中用到的記錄
-- 1.建立班級表create table t_clazz(id number primary key);
-- 2.建立學生表
create table t_student(id number primary key,name varchar(8),clazz references t_clazz(id));
-- 3.向班級表中插入資料
insert into t_clazz values(&id);
-- 4.向學生表中插入資料
create sequence sq minvalue 0 start with 0;
insert into t_student values(sq.nextval,&name,&clazz);
-- 5.刪除班級表裡沒有學生的班級
delete from t_clazz where id not in (select distinct clazz from t_student);
有兩個表a和b,均有c1和c2兩個字段,如果a的c1記錄在b中c1也有,就把b的c2換為a中對應的c2
-- 1.建立a表create table a(c1 number,c2 number);
-- 2.建立b表
create table b(c1 number,c2 number);
-- 3.插入資料
insert into a values(&c1,&c2);
insert into b values(&c1,&c2);
-- 4.建立儲存過程,修改b表
create or replace procedure p_up
iscursor c_up is select * from a;
v_row a%rowtype;
begin
for v_row in c_up loop
update b set c2=v_row.c2 where c1=v_row.c1;
end loop;
end;
概念觸發器不能主動呼叫,只有在對相應物件操作時自動觸發。
觸發器分類
dml觸發器
建立觸發器
ddl觸發器
替代觸發器
從產生時機角度
從產生的操作角度
悲觀鎖和樂觀鎖
第十一次課後作業
任意輸入乙個整數如 123456 或 123456 逆序輸出 654321 或 654321 分割線 費式數列 fibonacci 的前兩項為1 1,之後的每一項為前兩項之和,即fn fn 1 fn 2,費式數列的前10項為 1 1 2 3 5 8 13 21 34 55。輸入乙個正數數n n 40...
Oracle第一課課後作業
節省空間,主要是在三正規化節省空間,表中只有別的表的乙個外來鍵,沒有多餘的字段 建立使用者 create user user test identified by user test 授予許可權 grant connect to user test grant resource to user te...
8 16 第十一課課堂筆記
過濾乙個檔案的非空行和非注釋行 cat file egrep v v表示取反 表示非注釋行 表示非空行 第二個 表示或者 也可以 egrep v file 如果要過濾大小寫字母,要寫成 a za z 不能寫成 a z 因為大小寫字母在ascii中不連續。set檢視系統已生效的環境變數,包括自定義變數...