select * ?from user_objects where object_name = trigger_name ?and status='INVALID'
創(chuàng)新互聯(lián)是一家專業(yè)提供中原企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為中原眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型數(shù)據(jù)庫軟件公司。總部位于美國加州紅木城的紅木岸(Redwood Shores),現(xiàn)時首席執(zhí)行官為公司創(chuàng)辦人勞倫斯·埃里森(Lawrence J. Ellison)。
觸發(fā)器(trigger)是SQL server 提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),比如當(dāng)對一個表進(jìn)行操作( insert,delete, update)時就會激活它執(zhí)行。
觸發(fā)器可以查詢其他表,而且可以包含復(fù)雜的SQL語句。它們主要用于強(qiáng)制服從復(fù)雜的業(yè)務(wù)規(guī)則或要求。例如:您可以根據(jù)客戶當(dāng)前的帳戶狀態(tài),控制是否允許插入新訂單。
觸發(fā)器也可用于強(qiáng)制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關(guān)系。然而,強(qiáng)制引用完整性的最好方法是在相關(guān)表中定義主鍵和外鍵約束。如果使用數(shù)據(jù)庫關(guān)系圖,則可以在表之間創(chuàng)建關(guān)系以自動創(chuàng)建外鍵約束。
觸發(fā)器與存儲過程的唯一區(qū)別是觸發(fā)器不能執(zhí)行EXECUTE語句調(diào)用,而是在用戶執(zhí)行Transact-SQL語句時自動觸發(fā)執(zhí)行。
select * from dba_triggers where owner=用戶名;查看這個用戶的所有觸發(fā)器
select * from dba_constraints T where owner=用戶名 AND T.CONSTRAINT_TYPE='F';查看這個用戶中所有的外鍵約束,table_name顯示了建立在哪個表上
檢測的話,你可以查詢兩個a、b表的數(shù)據(jù)量來印證。
觸發(fā)器沒有運(yùn)行日志,需要自己去添加。
就是自己在觸發(fā)器里面寫數(shù)據(jù)到日志表(需要自己創(chuàng)建)里面。
查all_triggers表得trigger_name
select trigger_name from all_triggers where table_name='XXX';
觸發(fā)器是一種特殊的存儲過程 下面是觸發(fā)器的詳細(xì)說明
ORACLE 觸發(fā)器
ORACLE產(chǎn)生數(shù)據(jù)庫觸發(fā)器的語法為
create [or replace] trigger 觸發(fā)器名 觸發(fā)時間 觸發(fā)事件
on 表名
[for each row]
pl/sql 語句
其中
觸發(fā)器名 觸發(fā)器對象的名稱 由于觸發(fā)器是數(shù)據(jù)庫自動執(zhí)行 的 因此該名稱只是一個名稱 沒有實(shí)質(zhì)的用途
觸發(fā)時間 指明觸發(fā)器何時執(zhí)行 該值可取
before 表示在數(shù)據(jù)庫動作之前觸發(fā)器執(zhí)行
after 表示在數(shù)據(jù)庫動作之后出發(fā)器執(zhí)行
觸發(fā)事件 指明哪些數(shù)據(jù)庫動作會觸發(fā)此觸發(fā)器
insert 數(shù)據(jù)庫插入會觸發(fā)此觸發(fā)器
update 數(shù)據(jù)庫修改會觸發(fā)此觸發(fā)器
delete 數(shù)據(jù)庫刪除會觸發(fā)此觸發(fā)器
表 名 數(shù)據(jù)庫觸發(fā)器所在的表
for each row 對表的每一行觸發(fā)器執(zhí)行一次 如果沒有這一選項(xiàng) 則只對整個表執(zhí)行一次
舉例 下面的觸發(fā)器在更新表auths之前觸發(fā) 目的是不允許在周末修改表
create trigger auth_secure
before insert or update or delete file://對整表更新前觸發(fā)
on auths
begin
if(to_char(sysdate DY )= SUN
RAISE_APPLICATION_ERROR( 不能在周末修改表auths );
( RAISE_APPLICATION_ERROR是函數(shù) 括弧內(nèi)的 第一參數(shù)范圍在 ~ 之間 第二個
參數(shù)是字符串 大小在 k 超過的話 系統(tǒng)自動截?cái)啵?/p>
end if;
lishixinzhi/Article/program/Oracle/201311/17609