在oracle中,觸發器是在指定條件成立時,會自動執行定義的語句,寫法為「create [or replace] tigger 觸發器名觸發時間觸發事件on 表名[for each row] begin pl/sql語句end」。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
oracle觸發器的寫法是什麼
一、觸發器簡介
觸發器的定義就是說某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行。
因此觸發器不需要人為的去調用,也不能調用。
然後,觸發器的觸發條件其實在你定義的時候就已經設定好了。
這裡面需要說明一下,觸發器可以分成語句級觸發器和行級觸發器。
詳細的介紹可以參考網路上的資料,簡單的說就是語句級的觸發器可以在某些語句執行前或執行後被觸發。而行級觸發器則是在定義的了觸發的表中的行資料改變時就會被觸發一次。
具體舉例:
1、 在一個表格中定義的語句級的觸發器,當這個表被刪除時,程式就會自動執行觸發器裡面定義的操作程序。這個就是刪除表的操作就是觸發器執行的條件了。
2、 在一個表格中定義了行級的觸發器,那當這個表中一行資料改變的時候,例如刪除了一行記錄,那觸發器也會被自動執行了。
二、觸發器語法
觸發器的語法:
create [or replace] tigger 触发器名 触发时间 触发事件 on 表名 [for each row] begin pl/sql语句 end
其中:
- ##觸發器名:觸發器物件的名稱。由於觸發器是資料庫自動執行的,因此該名稱只是一個名稱,沒有實質的用途。
- 觸發時間:指明觸發器何時執行,該值可取:
- before:表示在資料庫動作之前觸發器執行;
- after:表示在資料庫動作之後觸發器執行。
- 觸發事件:指明哪些資料庫動作會觸發此觸發器:
- #insert:資料庫插入會觸發此觸發器;
- update:資料庫修改會觸發此觸發器;
- delete:資料庫刪除會觸發此觸發器。
- 表格 名:資料庫觸發器所在的表。
- for each row:對錶的每一行觸發器執行一次。如果沒有此選項,則只對整個表執行一次。
6、啟用複雜的業務邏輯範例1)、下面的觸發器在更新表 tb_emp之前觸發,目的是不允許在周末修改表:
create or replace trigger auth_secure before insert or update or DELETE on tb_emp begin IF(to_char(sysdate,'DY')='星期日') THEN RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表tb_emp'); END IF; END; /2)、使用觸發器實作序號自增建立一個測試表:
create table tab_user( id number(11) primary key, username varchar(50), password varchar(50) );建立一個序列:複製程式碼如下:
create sequence my_seq increment by 1 start with 1 nomaxvalue nocycle cache 20;建立一個觸發器:
CREATE OR REPLACE TRIGGER MY_TGR BEFORE INSERT ON TAB_USER FOR EACH ROW--对表的每一行触发器执行一次 DECLARE NEXT_ID NUMBER; BEGIN SELECT MY_SEQ.NEXTVAL INTO NEXT_ID FROM DUAL; :NEW.ID := NEXT_ID; --:NEW表示新插入的那条记录 END;向表格插入資料:
insert into tab_user(username,password) values('admin','admin'); insert into tab_user(username,password) values('fgz','fgz'); insert into tab_user(username,password) values('test','test'); COMMIT;查詢表格結果:SELECT * FROM TAB_USER;推薦教學:《
Oracle影片教學》
以上是oracle觸發器的寫法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具