手机访问 | 设为首页 | 加入收藏 | 网站地图

当前位置:电脑中国 > 数据库 > oracel >

Oracle视图和触发器简单示例

2017-03-23 09:18|来源:未知 |作者:dnzg |点击:

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的重要性大于写代码的重要性!

(责任编辑:dnzg)