日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle——15触发器

發布時間:2025/4/16 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle——15触发器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>


觸發器可實現表間數據的一致性和完整性。當一個基表被修改時,相應的觸發器會自動執行。對表數據的操作有插入、修改和刪除,相應的維護數據的觸發器也大致有insert、update和delete三種。

觸發器的類型有三種:

(1)DML觸發器:在對表進行DML操作的時候觸發。

(2)替代觸發器:由于在Oracle中不能直接對有兩個以上表建立的視圖進行DML操作,所以給出了替代觸發器,它是Oracle專門為進行視圖操作的一種處理方法。

(3)系統觸發器:它可以在Oracle數據庫系統的事件中進行觸發,如數據庫的開啟和關閉。

觸發器中的關鍵詞:

觸發器中有兩個非常重要的關鍵詞,一個是old,一個是new,old用于修飾操作完成前的值,new用于修飾完成后的值,可以代表一行。此外,只有行級的觸發器才能使用這兩個關鍵字。

?

一、利用SQL語句創建觸發器

1、利用SQL創建觸發器的語法格式:

?

create [or replace] trigger [schema.]trigger_name{before | after | instead of}{delete [or insert][or update [of column,...n]]}on [schema.]table_name | view_name[for each row [when(condition)]]sql_statement[,...n] ?

其中,before:觸發器在操作前執行;after:觸發器在操作后執行;instead of:指定創建替代觸發器。

delte、insert、update:指定觸發事件,多個事件間用or連接。

of Column:指定在哪些列上執行update觸發。

for each row:表示該觸發器是行級的,只有行級的觸發器才能使用old和new關鍵字。

示例代碼:

?

create or replace trigger moduleInsertTrigger after inserton t_modulebegindbms_output.put_line('The Name is: ' || :new.name);end; ?

2、創建觸發器的限制

(1)觸發器代碼大小必須小于32KB

(2)觸發器中有效語句可以包括DML語句,但不能包括DDL語句;rollback、commit、savepoint也不能使用。但是,對于系統觸發器可以使用create、alter、drop table和alter...compile語句。

(3)long、long raw和lob的限制:

a.不能插入數據到long或long raw

b.來自long或long raw的數據可以轉換成字符型,但是不能超過32KB

c.使用long或long raw不能聲明變量

d.在long或long raw列中不能使用:new和:parent

e.在lob中的:new變量不能修改

(4)引用包變量的限制:如果update或delete語句檢測到當前的update沖突,則Oracle會執行rollback到savepoint上并重新啟動更新。

3、觸發器觸發順序

(1)執行before語句的觸發器

(2)執行before語句的行級觸發器

(3)執行DML語句

(4)執行after語句的行級觸發器

(5)執行after語句的觸發器

4、創建DML觸發器

觸發器有單獨的名字空間,所以觸發器名可以與表名和過程名相同,但在同一個schema中的觸發器不能重名。

假設現在這樣一個表t_module(id,name),然后這里面的數據非常重要,我們希望能夠保留它的刪除記錄,這樣我們就可以給該表建立如下這樣一個觸發器:

?

create or replace trigger module_delete_trigger after deleteon t_module for each rowbegininsert into t_module_deleted values(:old.id, :old.name, current_timestamp);end; ?

5、創建替代觸發器

由于視圖有可能是由多個表進行關聯而成,這種情況下,直接通過更新視圖來更新基表是不可行的,這個時候我們就可以通過替代觸發器來工作了。

示例代碼:

?

/*創建視圖*/create or replace view t1_t2_viewasselect t1.name t1_name, t2.name t2_name, t2.id t2_id from table1 t1 join table2 t2 on t1.id=t2.t1id;/*創建對應的更新觸發器*/create or replace trigger t1_t2_view_trigger instead of updateon t1_t2_view for each rowbeginupdate table2 t2 set t2.name = :new.t2_name where id = :new.t2_id; end; ?

6、創建系統觸發器

系統觸發器是在進行數據庫系統事件時進行觸發,主要包括DDL語句,其語法格式如下:

?

create or replace trigger [schema.]trigger_name{before | after}{DDL_EVENT_LIST | database_event_list}on {database | [schema.]SCHEMA}[when_clause]trigger_body ?

其中,DDL_EVENT_LIST表示一個或多個DDL事件,多個事件可以用or分開;

database_event_list表示一個說多個數據庫事件,多個事件中間用or分開;

database表示數據庫級觸發器;schema表示用戶級觸發器。

示例代碼如下:

?

create or replace trigger create_triggerbefore create on schemabegininsert into table10(id, name) values (100, 'HELLO');end; ?

二、觸發器的修改

和過程、視圖一樣,Oracle也提供了alter trigger語句,但是該語句只是用于重新編譯現有觸發器的,需要修改觸發器需要使用create?or replace trigger...語句。

三、觸發器的刪除

語法格式:

?

drop trigger [schema.]trigger_name.

轉載于:https://my.oschina.net/NEMOCoder/blog/608959

總結

以上是生活随笔為你收集整理的Oracle——15触发器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜爱爱影院 | 大地资源影视在线播放观看高清视频 | 高清不卡毛片 | 免费一区二区视频 | 国产精品乱码久久久久久久久 | 一级国产精品 | 国产成人精品一区二区三区网站观看 | av久热| 中文字幕制服诱惑 | 成人欧美一级特黄 | 亚洲av无码专区在线电影 | 久艹伊人 | 亚洲日本中文字幕 | 黄色片在线观看免费 | 乱短篇艳辣500篇h文最新章节 | 亚洲国产不卡 | 国产一二三在线观看 | 国产精品久久久久久久一区二区 | 国产区福利 | 第四色在线视频 | 亚洲综合社区 | 日本成人在线看 | 一级片免费在线播放 | 色99在线 | 蜜桃av在线免费观看 | 欧美在线一二三四区 | 特黄网站 | а√天堂资源官网在线资源 | 丁香花高清视频完整电影 | 免费成人av在线播放 | 六月丁香婷婷网 | wwww日本60| 日韩在线一级 | 奇米影视第四色7777 | 永久免费不卡在线观看黄网站 | 美女隐私免费观看 | 泰国午夜理伦三级 | 好吊色免费视频 | 致命弯道8在线观看免费高清完整 | 欧美在线日韩在线 | 日本第一页 | 三级国产视频 | 免费日本黄色网址 | 欧美色综合网 | 亚洲图片中文字幕 | 最新激情网 | 狼人综合伊人 | 国产五月婷婷 | 欧美性猛交xx乱大交 | www.婷婷色 | 日韩精品国产一区 | 一区二区三区日本视频 | 大肉大捧一进一出视频 | 激情偷乱人成视频在线观看 | 又大又长粗又爽又黄少妇视频 | 日韩五码 | 久久久www成人免费精品 | 亚洲成人欧美 | 久久艹在线| 99这里只有 | 人人澡人人草 | 日韩欧洲亚洲 | 温柔女教师在线观看 | 野外一级片 | 国产资源第一页 | 热久久91 | 成人aaa视频| 草草影院在线观看 | 少妇无套高潮一二三区 | 抽插丰满内射高潮视频 | 日日人人 | 久久精品在线免费观看 | 六月丁香色婷婷 | 香蕉视频在线播放 | 久久久久久久极品内射 | 亚洲欧美日韩在线 | 青青草免费在线 | 欧美日韩电影一区二区三区 | 边吃奶边添下面好爽 | 国产亚洲精品久 | www.午夜av| 久久国产精品久久 | 国产一级在线视频 | 天啪 | 精品国产aⅴ一区二区三区四川人 | 97在线精品视频 | 欧美成人a交片免费看 | 青青草视频观看 | 极品少妇一区二区 | 黄色片视频免费观看 | 国产一区二区三区在线观看 | 拍国产真实乱人偷精品 | 日本一区二区免费在线 | 国产高清一区二区三区 | 久久中文字幕人妻 | 日b视频免费看 | 人妻 日韩精品 中文字幕 | 800av在线视频 | 自拍偷拍另类 |