触发器学习(DDL触发器)

/* 创建一个触发器禁止新建对象*/

SQL> CREATE TRIGGER no_create
  2    AFTER CREATE ON SCHEMA
  3  BEGIN
  4    RAISE_APPLICATION_ERROR(
  5    -2000,
  6  ‘ERROR:Objects cannot be created in the production database.‘
  7  );
  8  END;
  9 /

Trigger created

SQL> CREATE TABLE demo(col1  NUMBER);
CREATE TABLE demo(col1  NUMBER)
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-21000: -2000 的 raise_application_error 错误号参数超出范围
ORA-06512: 在 line 2

/*创建一个禁止删除对象的触发器*/

  CREATE OR REPLACE TRIGGER undroppable

BEFORE DROP ON SCHEMA

BEGIN

  RAISE_APPLICATION_ERROR(-20000,‘You cannot drop me!I am invincible!‘);

END;
时间: 2024-12-31 03:33:43

触发器学习(DDL触发器)的相关文章

DDL触发器的应用

一般来说,DML触发器可以监测得到具体对象的具体数据的变更.然而,DDL触发器则能够对一些服务器的行为作出监控,比如我们可以利用DDL触发器来做登录限制啊,做一些日志控制啊之类的. 好,然后简单粗暴上例子 首先我们做一个监控创建表的触发器,DDL触发器,一个关键点是在于 EVENTDATA() 这个函数提供的信息. CREATE TRIGGER TR_CreateTable ON ALL SERVER FOR CREATE_TABLE AS BEGIN SELECT EVENTDATA(); E

SQL_触发器学习

--触发器学习-------------------------------------------------------------------------------after 触发器---------------------------------------------------------------------------------1 insert 触发器IF EXISTS(SELECT * FROM sys.objects WHERE name='tgr_tablename_

47. SQL- 触发器之DDL 触发器

触发器工作原理     DDL触发器 与DML 触发器不同,DDL 触发器不会为响应针对表或视图的UPDATE.INSERT或DELETE 语句而激发. 响应多种数据定义语言(DDL) 语句而激发.主要是以CREATE.ALTER和DROP 开头的语句. DDL 触发器可用于管理任务,例如审核和控制数据库操作. DDL 触发器的作用域: l 数据库作用域 l 服务器作用域 在响应当前数据库或服务器中处理的Transact-SQL 事件时,将激发DDL 触发器.触发器的作用域取决于事件(数据库作用

oracle 触发器 学习笔记

触发器 是特定事件出现的时候,自动执行的代码块.类似于存储过程,但是用户不能直接调用他们. 功能: 1. 允许/限制对表的修改 2. 自动生成派生列,比如自增字段 3. 强制数据一致性 4. 提供审计和日志记录 5. 防止无效的事务处理 6. 启用复杂的业务逻辑 开始 create trigger biufer_employees_department_id before insert or update of department_id on employees referencing old

SQL触发器学习

? 简介 触发器是一种特殊类型的存储过程.触发器分为: DML( 数据操纵语言 Data Manipulation Language)触发器:数据库中表或视图的数据更改时触发,包括insert,update,delete语句 DDL(数据定义语言 Data Definition Language)触发器:表或索引中的create.alter.drop语句. 登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发. ? 优劣 可以强制执行业务规则: Microsoft SQL Serve

mysql触发器学习

创建一个触发器 语法: create trigger 触发器名字 create trigger xiaoshou_update_trigger  after update on xiaoshou  for each row  begin  update jiangjin  set xiaoshouer=( select sum(taoshu*danjia)from xiaoshou  where userid=new.userid  and month=new.month) , jiangjin

杂谈--DML触发器学习

触发器按类型分为三类: 1. DML 触发器,在数据变更时触发: 2. DDL 触发器,在修改数据库级别或实例级别对象时触发: 3. Login 触发器,在用户登录时触发: 最常见的是DML触发器,DML触发器又可以分为两类: INSTEAD OF触发器和AFTER触发器(部分书上有提到FOR触发器,其实就是AFTER 触发器,只是写法不同而已). 从功能来看,INSTEAD OF触发器用来替换实际的数据修改操作,而AFTER触发器用来在实际操作完成后进行后续操作.例如对于DELETE操作,如果

oracle触发器学习

转自:http://blog.csdn.net/indexman/article/details/8023740/ 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 重新编译触发器 8.3 删除和使能触

DDL触发器抓取赋权操作

近期在对接中,业务(数据挖掘同事)需要将部分账号控制到表级别,只允许部分账号访问指定的表. 而这些人员是不确定的,并且变动将较为频繁. 与对接同事沟通后采用如下方案实现: 给此同事开通此数据库的db_securityadmin角色账号,此账号可以在库级别范围内给其他用户赋予表级别权限. 新建一个数据库,并在其中新增一张记录相应操作的日志表. 赋予此账户写入log表操作(grant insert)其余权限无 新建库级别的DDL触发器,通过此触发器获取相应的权限操作变动记录(grant,deny,r

触发器学习

数据库表: 创建语句: --table1 CREATE TABLE [dbo].[table1](     [id] [int] IDENTITY(1,1) NOT NULL,     [value] [varchar](10) NULL, CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED (     [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =