WEB开发网
开发学院数据库Oracle Oracle概念:同义词、序列与视图 阅读

Oracle概念:同义词、序列与视图

 2009-06-09 13:15:36 来源:WEB开发网   
核心提示: select * from dba_updatable_columns where table_name=upper(‘company_phone_book’)尝试更新email和nameupdate hr.company_phone_bookset name=&r

select * from dba_updatable_columns where table_name=upper(‘company_phone_book’)

尝试更新email和name

update hr.company_phone_book

set name=’Chen, Donny’

where emp_id=100

1. 使用instead of 触发器更新视图:

create trigger update_name_company_phone_book

INSTEAD OF

Update on hr.company_phone_book

Begin

Update hr.employees

Set employee_id=:new.emp_id,

First_name=substr(:new.name, instr(:new.name,’,’)+2),

last_name= substr(:new.name,1,instr(:new.name,’,’)-1),

phone_number=:new.phone_number,

email=:new.email

where employee_id=:old.emp_id;

end;

2. With check option 约束:

作用:阻止更新不能通过视图访问的数据。

试验:

1) 建立视图,只能看到department_id=10的雇员

create view department_10 as

select * from hr.employees where department_id=10

With check option

2) 选择:select employee_id,first_name,last_name from department_10;

3) 查看可更新列:

select * from dba_updatable_columns

where table_name=upper(‘department_10’)

4) 尝试将此人移动到部门20

update department_10

set department_id=20

where employee_id=200

报错!!

这个视图限制我们只能访问department=10的数据,我们要通过视图修改department=20的数据,被禁止。

[试验]关于前5名

1) 谁是公司前5名的雇员

select last_name,hire_date

from hr.employees

order by hire_date;

2) 只想取回前五名数据呢?

select last_name,hire_date

from hr.employees

where rownum<6

order by hire_date;

结果不正确,先取了前5条数据,再排序

3)select last_name,hire_date

from (select last_name,hire_date

from hr.employees

order by hire_date)

where rownum<6

系列文章:

Oracle概念:过程、函数、程序包

Oracle概念:异常和游标

上一页  1 2 3 4 5 

Tags:Oracle 概念 同义词

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接