Oracle第十一課課後作業

2022-02-04 01:08:30 字數 2085 閱讀 4330

給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檢視系統已生效的環境變數,包括自定義變數...