Oracle視圖和觸發器簡單示例

分類:編程 時間:2017-03-30

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的重要性大於寫代碼的重要性!


Tags:

文章來源:


ads
ads

相關文章
ads

相關文章

ad