数据库之 触发器 基础

原创 2015年11月18日 21:43:46
触发器概述:
特殊程序
与函数和存储过程类似,都属于PL/SQL块
不可以直接调用,只能是某种事件触发 

分类:DDL触发器、DML触发器、instead-of触发器(替代某个动作的触发器)、系统触发器(对系统访问进行控制)

触发器body部分不可以超过32760字节
一般情况下,非系统触发器是不能直接调用DDL、DCL、TCL
尽量避免使用long 和long raw 格式(用clob blob)

例子:
create trigger trig1
before delete on emp
declare 
     x number :=10;
begin 
    dbms_output.put_line('delete on emp');
end trig1;

DDL触发器 
创建、修改和删除数据库对象时被触发
主要用来控制、监控DDL语句
常见的DDL事件:ALTER CREATE DROP GRANT REVOKE TRUNC

创建格式:
CREATE[OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER|INSTEAD OF}ddl_event ON {DATABASE|SCHEMA}
[WHEN(condition)]
[DECLARE 
    declaration]
BEGIN 
    statement
END;

删除触发器:drop trigger 触发器名

例子:
create or replace trigger ddltrigger
before create on schema
begin 
    dbms_output.put_line('create some object on current schema');
end;

DML触发器

在执行INSERT DELETE UPDATE时被触发
主要用来检测和保存替换值得操作

行级触发器与语句级触发器

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER}
{INSERT|UPDATE|UPDATE OF COL1[,COL2......]|DELETE} ON table_name
[FOR EACH ROW] --加就是行级触发器
[WHEN(condition)]
[DECLARE
   declaration]
BEGIN
   statement
END;

例子:
create or replace trigger dmltrig1
before delete on emp
for each row
begin
    dbms_output.put_line('1');
end;

instead-of触发器

替代触发器(一般处理视图操作)
拦截INSERT UPDATE DELETE 操作并使用代替之
通常用来管理对不可更新视图的操作

CREATE [OR REPLACE] TRIGGER trigger_name
INSREAD OF dml_event ON {object_name|database|schema}
[WHEN(condition)]
[DECLARE
   declaration]
BEGIN
   statement
END;


例子:
create or replace trigger insteadtring
instead of delete on empview
begin
   dbms_output.put_line('delete on enpview')
end;

系统触发器

系统活动发生时会触发
通常用来跟踪系统事件,审计系统访问 

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE|AFTER} db_event ON {database|schema}
[WHEN(condition)]
[DECLARE
   declaration]
BEGIN
   statement
END;

例子:
CREATE OR REPLACE TRIGGER systemtrig
after logon on database
begin
   insert into logs values ('user logged in');
end;






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据库基础<四>触发器

1、概念 触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程,一旦定义,任何用户 对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完...

Oracle数据库基础(五)--索引,触发器

索引 B-Tree结构   请参照相应的图例 1--索引是一种允许直接访问数据表中某一数据行的树形结构,为了提高查询效率而引入,    是独立于表的对象,可以存放在与表不同的表空间中; ...
  • syz1217
  • syz1217
  • 2015年10月25日 12:16
  • 173

数据库基础 之 “存储过程和触发器”

数据库基础  之    “存储过程和触发器”      一想到要总结一下存储过程和触发器,就感觉有点怵头,。因为总感觉存储过程和触发器是比较高级的东西,总是不能把握。于是就一直拖着没有进行总结。不过...

【数据库基础】数据库完整性控制-触发器

未完~

数据库触发器学习

  • 2015年09月23日 22:41
  • 177KB
  • 下载

sqlserver数据库里sql 语句查看表里的约束,要查出 约束名、列名、约束类型、触发器

主键约束 SELECT tab.name AS [表名], idx.name AS [主键名称], col.name AS [主键列名] FROM sys.indexes idx ...

数据库创建触发器

  • 2014年05月25日 08:09
  • 429B
  • 下载

mybatis操作oracle数据库主键自增(触发器)

上一篇文章介绍了hibernate 实现oracle主机自增的机制,本篇文章将研究mybatis 实现oracle主键自增的机制 首先我们看对于同一张student表,对于mysql,sql s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库之 触发器 基础
举报原因:
原因补充:

(最多只允许输入30个字)