91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle系列:(30)觸發器

發布時間:2020-07-21 22:51:17 來源:網絡 閱讀:253 作者:lsieun 欄目:關系型數據庫


什么是觸發器【Trigger】?

不同的DML(select/update/delete/insert)操作,觸發器能夠進行一定的攔截,符合條件的操作方可操作基表;反之,不可操作基表。類似于JavaWeb中的Filter、Struts2中的Iterceptor。


為什么要用觸發器?

如果沒有觸發器,那么DML所有操作,均可無限制地操作基表,這樣一來,不符合業務需求。



創建語句級觸發器insertEmpTrigger,當對表【emp】進行增加【insert】操作前【before】,顯示"hello world"

create or replace trigger insertEmpTrigger
before
insert
on emp
begin
   dbms_output.put_line('hello world'); 
end;
/


刪除觸發器insertEmpTrigger,語法:drop trigger 觸發器名

drop trigger insertEmpTrigger;


使用insert語句插入一條記錄,引起insertEmpTrigger觸發器工作

insert into emp(empno,ename) values(1234,'小明');


使用insert語句插入N條記錄,引起insertEmpTrigger觸發器工作

insert into emp 
select * from xxx_emp;


Oracle系列:(30)觸發器

創建語句級觸發器deleteEmpTrigger,當對表【emp】進行刪除【delete】操作后【after】,顯示"world hello"

create or replace trigger deleteEmpTrigger
before
delete
on emp
begin
   dbms_output.put_line('刪除數據'); 
end;
/


使用delete語句刪除一條記錄,引起deleteEmpTrigger觸發器工作

delete from emp where empno=7369;


使用delete語句刪除N條記錄,引起deleteEmpTrigger觸發器工作

delete from emp where 1=1;

Oracle系列:(30)觸發器

星期一到星期五,且9-20點能向數據庫emp表插入數據,否則使用函數拋出異常,

語法:raise_application_error('-20000','例外原因')

create or replace trigger securityTrigger
before
insert
on emp
declare
   pday varchar2(20);
   phour number(2);
begin
  select to_char(sysdate,'day') into pday from dual;
  select to_char(sysdate,'hh34') into phour from dual;
  if pday in ('星期六','星期日') or phour not between 7 and 22 then
    raise_application_error('-20000','非工作時間,不能向emp表添加數據');
  end if;
end;
/


Oracle系列:(30)觸發器


創建行級觸發器checkSalaryTrigger,漲后工資這一列,確保大于漲前工資,語法:for each row/:new.sal/:old.sal

create or replace trigger checkSalaryTrigger
after
update of sal
on emp
for each row
begin
   if :new.sal <= :old.sal then
     raise_application_error('-20200','工資不能越長越低');
   end if;
end;
/


其中,需要注意的地方

(1)update of sal是對列的更新進行觸發 

(2)for each row

(3):new和:old代表一行記錄

(4)raise_application_error中-20000和-20200之間允許開發者自定義錯誤


Oracle系列:(30)觸發器


刪除觸發器,表還在嗎?

基表還在;觸發器不會進回收站,直接徹底刪除


將表丟到回收站,觸發器還在嗎?

觸發器還在


當閃回表后,觸發器會在嗎?


徹底刪除表,觸發器會在嗎?

原來的觸發器也被刪除了

新的同樣的名字的表,是不是繼承原來的觸發器的

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达日县| 遵化市| 永春县| 台东县| 辉县市| 科技| 宾川县| 仙游县| 和龙市| 陆良县| 松溪县| 兴仁县| 卢龙县| 永定县| 沂南县| 鸡泽县| 乌兰浩特市| 宽甸| 平泉县| 虹口区| 新干县| 邵阳市| 个旧市| 西畴县| 清新县| 新野县| 朝阳市| 如东县| 昔阳县| 兰溪市| 福海县| 腾冲县| 吴川市| 南乐县| 迁西县| 祁阳县| 金寨县| 隆德县| 罗田县| 聂荣县| 新巴尔虎右旗|