PL/SQL——创建一个Oracle用户、触发器

一、创建一个Oracle用户

  • 打开pl/sql,使用system登录。
  • 右击Users -> new
    在这里插入图片描述
  • 设置用户名、密码。。。如下:
    在这里插入图片描述
  • 设置角色权限
    在这里插入图片描述
  • 设置表空间,如果不设置会报错
    在这里插入图片描述
    在这里插入图片描述

二、触发器

2.1 触发器介绍

在Oracle系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块
触发器在数据库中以独立的对象存储

触发器是:特定实践出现的时候,自动执行的代码块。

类似于存储过程,触发器与存储过程的区别在于:
— 存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。

  • DML触发器:Oracle可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发
  • 替代触发器:由于在Oracle里,不能直接对由两个以上的表建立的视图进行操作,所以给出了替代触发器
  • 系统触发器:它可以在Oracle数据库系统的事件中进行触发,如Oracle系统的启动和关闭等

2.2 触发器的语法

create [or replace] tigger 触发器名
	{before|after} -- 触发时间 
	{insert|update|delete [of column [,column]]} -- 触发事件
on [schema.]表名
[for each row]
[where condition]
begin
	pl/sql语句
end
  • 触发器名:触发器对象的名称
  • 触发时间:触发事件和该触发器的操作顺序
    — before:表示在数据库动作之前触发器执行
    — after:表示在数据库动作之后触发器执行
  • 触发事件:在任何情况下触发TRIGGER
    例如 insert/update/delete:数据库执行这些动作时会触发此触发器
  • 表名:数据库触发器所在的表
  • for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次
create tigger triger_name
	befor/after insert or update or delete
on employees
begin
	当上述触发事件发生前/后,对该表或者其他表进行操作。
end

使用 :new, :old 修饰符

/*
	查看更新之后,工资的前后对比
*/
create or replace trigger update_emp_trigger
after
	update on emps
for each row
begin
	dbms_output.put_line('old:salary' || :old.salary || ',' || 'new:salary' || :new.salary);
end;
/*
	编写一个触发器,在对my_emp记录进行删除的时候,在my_emp_bak表中备份对应的记录
/*
create table my_emp
as
select employee_id,salary from employees;

-- where 1=2; 表示这张表是空的 --
create table my_emp_bak
as
select employee_id,salary from employees
where 1=2;

create or replace trigger delete_emp_trigger
before delete on my_emp
for each row
begin
	insert into my_emp_trigger
	values(:old.employee_id,:old.salary);
end
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值