虛表是乙個快照,檢視與自查詢都屬於虛表.
觸發器如果在同一張表上可以replace,如果不在同一張表則不能replace
在oracle中dml語句需要手動提交,ddl語句自動提交
觸發器預設的是語句級觸發器,就是每個語句觸發一次觸發器,二加上for each now後變為行級觸發器,就是對語句涉及到的每一行都觸發一次觸發器.
1.檢視是oracle的一種資料物件,能簡化操作,提高安全性,滿足不同使用者的需求,檢視不是真正存在的物理表.它是根據別的表生成乙個動態的檢視.
建立檢視基本語法create view 檢視名字 as select 語句 [with read only]
例子:create view empview as select empno,ename,job from emp;
2.檢視可以像表一樣被查詢.
3.建立檢視後面可以附加with read only條件設定檢視唯讀.如果檢視不設定唯讀那麼可以對檢視進行修改,即修改了原表.
4.建立乙個橫跨兩張表的檢視以簡化多表查詢操作create viwe myviwe as select emp.ename,dept.deptno,dept.dname from emp,dept where emp.deptno=dept.deptno with read only;
5.建立修改檢視 create or replace view 試圖名 as select語句(可多表) 刪除檢視drop 檢視名稱;
6.檢視不能新增索引,不占用磁碟空間.不同的使用者查詢不同的檢視有利於提高安全性.
7.觸發器是指某一事件發生時自動觸發的隱含執行的動作.(比如當使用者登入時自動記錄時間與ip的操作)
8.觸發器分為dml(data manipulation language資料操作語言)觸發器與ddl(data definition language資料定義語言)觸發器和系統觸發器(與系統相關的觸發器,比如使用者登入退出啟動關閉資料庫)
9.建立觸發器的基本語法
create trigger trigger_name
實際例子在scott.emp表上新增記錄時提示新增了一條.()
create or replace trigger tril
after insert on
scott.emp
begin
dbms_output.put_line('新增了一條');
end;
10.create or replace trigger tril2
after update on
scott.emp
for each row (表示這是乙個行級觸發器)
begin
dbms_output.put_line('修改了一條資料');
end;
行級觸發器每修改幾個記錄就提示幾次,而語句級觸發器修改多個記錄也只提示一次.
11.可以利用before建立觸發器實現資料安全,例如:
create or replace trigger tril3
before delete on
scott.emp
begin
if to_char(sysdate,'day') in ('星期日','星期六') then
dbms_output.put_line('休息日不可以刪除員工');
end if;
end;
12.在增刪改查前列印相應提示
create or replace trigger tri3
before
insert or update or delete on
scott.emp
begin
case
when insert then dbms_output.put_line('請不要新增');
when update then dbms_output.put_line('請不要更新');
when delete then dbms_output.put_line('請不要刪除');
13.實現乙個新工資不能低於舊工資的觸發器
create or replace trigger tri4
before update on
scott.emp
for each row
begin
if :new.sal<:old.sal then dbms_output.put_line('工資不能低於原來的工資');
else
dbms_output.put_line('原來的工資是'||:old.sal||'現在的工資'||:new.sal);
end if;
end;
14.關於相關操作:new與:old的有效性
特性insert updatedelete
oldnull 有效有效
new有效 有效null
15.add_months(:new.birthday,18*12)>sysdate(這個條件是指birthday加上18歲要大於當前系統時間)
16.系統觸發器常用的五種事件(系統級觸發器往往由dba賬戶建立)
ora_client_ip_address返回客戶端ip
ora_database_name返回資料庫名
ora_login_user返回登入使用者名稱
ora_sysevent返回觸發觸發器的系統事件名
ora_des_encrypted_password返回使用者des(md5)加密後的密碼
基本語法為
crate or replace trigger tri_name
after [before]logon [logoff] on datebase
begin
執行語句
end;
實際例子
登入觸發器:
create or replace trigger tri7
after logon on datebase
insert into logon_table(自己另行建立此表) (username,logon_time,address) values (ora_login_user,sysdate,ora_client_ip_address);
begin
end;
17.ddl觸發器(一般是由系統管理員完成的,也需要dba賬戶)
可以被create alter drop觸發
create or replace trigger 觸發器名
after ddl on 方案名.schema
begin
執行語句
end;
18.實際應用:
建立一張表
create table my_ddl_record(event varchar2(64),username varchar2(64),ddl_time date);
建立觸發器
create or replace trigger tri9
after ddl on scott.schema
begin
insert into my_ddl_record values(ora_sysevent,ora_login_user,sysdate);
end;
19.指定觸發器的禁用與啟用
alter trigger 觸發器名 disable/enable
20.禁用或者啟用指定表上的所有觸發器
alter table 表名 disable all trigger;(9i)
alter table 表名 enable all trigger;(9i)
21.徹底刪除觸發器
drop trigger 觸發器名;
oracle 學習筆記
本地網路服務名配置 在客戶機的 oracle oracle90 network admin 安裝目錄下有乙個名為tnsnames.ora的命名檔案,其中儲存的就是本地命名的配置.當客戶機應用程式提出登入要求時,其使用的連線字串被命名檔案解析.在命名檔案裡儲存的是與連線字串對應的網路位址.例如 mys...
Oracle學習筆記
許可權管理 oracle 9i 3個預設使用者 sys 超級管理員 預設密碼 change on install system 普通管理員 預設密碼 manager scott 普通使用者 預設密碼 tiger oracle 10g sys 密碼在安裝時設定 system 密碼在安裝時設定 scot...
oracle學習筆記
1 set linesize 100 設定長度 2 set pagesize 30 設定每頁顯示數目 3 em a.sql 開啟記事本 4 a 執行檔案a中的 可指定檔案的路徑 d a.txt 5 conn 使用者名稱 密碼 根據使用者名稱和密碼連線資料庫 如果連線超級管理員 sys 則應加上as ...