欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle视图和触发器简单示例

程序员文章站 2022-03-10 17:58:01
oracle视图和触发器简单示例,存储过程,触发器,视图在开发中都是比较常见的,存储过程的基本已经简单的介绍了,这里就不在废话了。 视图:简单来说就是一张虚拟表,里面存放了从一张表或多张表中获取的我...

oracle视图和触发器简单示例,存储过程,触发器,视图在开发中都是比较常见的,存储过程的基本已经简单的介绍了,这里就不在废话了。

视图:简单来说就是一张虚拟表,里面存放了从一张表或多张表中获取的我们想要的数据,视图存在于中,不占物理内存,这个是相对的,因为视图本身的定义语句还是要存储在数据字典中的,视图只有逻辑定义,而且视图是可以操作基表的。每次使用的时候,只是重新执行sql。要注意视图是不可以传参的,而存储过程是可以传参的。

建表:

//建表时每个字段的类型大小要合理
create table(id varchar(8),name varchar(28),pwd varchar(38),address varchar(68))

创建视图:

//or replace:如果存在同名的视图, 则使用新视图"替代"已有的视图
//v_test:视图名称,这个视图获取了user_info表中所有id='88'的数据
create or replace view v_test 
as 
select * from user_info where id = '88'

调用视图:

select * from v_test//视图名称就相当于表名

通过视图操作基表:

//这里插入的数据其实是插入到user_info中去了
insert into v_test(id,name,pwd,address) values('7','aaa','999','杭州')

触发器:触发器是在事件发生时隐式地自动运行的pl/sql程序块,不能接收参数,不能被调用。注意:存储过程是显示的被调用,并且可以接收参数。

创建触发器:

//or replace:如果存在同名的触发器, 则使用新触发器"替代"已有的触发器
create or replace trigger test
//在触发事件之前执行,after:之后
before
    //触发事件:在向user_info表中插入数据之前执行该触发器 
    insert on user_info 
    //对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
    for each row 
  begin
    --你让触发器所要做的事情
    dbms_output.put_line('插入前-----');
  end;

测试:

--调用存储过程插入数据   
begin
    test('5','张三','255','江西南昌');
    end;
    //执行完你会在plsql输入台看到:插入前-----

总结:其实不管是视图、触发器还是存储过程,都不难的(但是对于目前作者来说还是蛮难的啦),它们的根本就在于写sql的能力,如果写sql的能力贼强,我相信写这些东西也是贼强的,总之一句话吧,会写sql的重要性大于写代码的重要性!