<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0

    CREATE RULE

    Name

    CREATE RULE — 定義一個新規則
    CREATE RULE name AS ON event
        TO object [ WHERE condition ]
        DO [ INSTEAD ] action
    
    這里 action 可以是:
    
    NOTHING
    |
    query
    |
    ( query ; query ... )
    |
    [ query ; query ... ]
      

    輸入

    name

    創建的規則名.

    event

    事件是 SELECTUPDATEDELETEINSERT 之一.

    object

    對象是 tabletable.column. (目前只有 table 形式實際上是實現了的.

    condition

    任意 SQL 布爾條件表達式.條件表達式除了引用 newold 之外不能引用任何表.

    query

    組成 action 的查詢可以是任何 SQL SELECTINSERTUPDATEDELETE,或 NOTIFY 語句之一.

    conditionaction 里, 特殊表名字 newold 可以用于指向引用表 ( object) 里的數值 new 在 ON INSERT 和 ON UPDATE 規則里 可以指向被插入或更新的新行. old 在 ON SELECT,ON UPDATE,和 ON DELETE 規則里可以指向現存的被選擇,更新,或者刪除的行.

    輸出

    CREATE

    成功創建規則后的返回信息.

    描述

    Postgres 規則系統 允許我們在從數據庫或表中更新, 插入或刪除東西時定義一個可選的動作來執行。目前,規則用于實現表視圖。

    規則的語意是在一個單獨的記錄正被訪問,更新,插入或刪除時, 將存在一個舊記錄(用于檢索,更新和刪除)和一個新記錄 (用于更新和追加). 這時給定事件類型和給定目標對象(表)的所有規則都將被檢查, (順序不定). 如果在 WHERE (如果有)子句里面所聲明的 condition? 為真,那么 action 部分的規則就被執行. 如果聲明了 INSTEAD,那么 action 就會代替原來的查詢;否則它在執行原來的查詢之前處理. 在 conditionaction 里面, 在舊記錄里字段的數值和/或新記錄里字段的數值被 old.attribute-namenew.attribute-name 代替.

    規則的 action 部分可以由一條或者多條查詢組成.要寫多個查詢,用圓括弧或者方括弧 把它們包圍起來. 這樣的查詢將以聲明的順序執行(只是我們不能保證 對一個對象的多個規則的執行順序). action 還可以是 NOTHING 表示沒有動作.因此,一個 DO INSTEAD NOTHING 規則制止了 原來的查詢的運行(當條件為真時); DO NOTHING 規則是沒有用的.

    規則的 action 部分 執行的時候帶有和觸發動作的用戶命令相同的命令和事務標識符.

    注意

    目前,ON SELECT 規則必須是無條件的 INSTEAD 規則并且 必須有一個由一條 SELECT 查詢組成的動作. 因此,一條 ON SELECT 規則有效地把對象表轉成視圖,它的可見內容 是規則的 SELECT 查詢返回的記錄而不是存儲在表中的內容(如果有的話). 我們認為寫一條 CREATE VIEW 命令比創建一個表然后定義一條 ON SELECT 規則在上面的風格要好.

    為了在表上定義規則,你必須有規則定義權限. 用 GRANTREVOKE 修改權限.

    有一件很重要的事情是要避免循環規則. 比如,盡管下面兩條規則定義都是 Postgres 可以接受的, select 命令會導致 Postgres 報告 一條錯誤信息,因為該查詢循環了太多次:

    Example 1. 循環重寫規則組合的例子:

    CREATE RULE bad_rule_combination_1 AS
        ON SELECT TO emp
        DO INSTEAD 
    	SELECT * FROM toyemp;
         
    CREATE RULE bad_rule_combination_2 AS
        ON SELECT TO toyemp
        DO INSTEAD 
    	SELECT * FROM emp;
         

    下面這個對 EMP 的查詢企圖將導致 Postgres 產生一個錯誤信息, 因為該查詢循環了太多次:

    SELECT * FROM emp;
          

    兼容性

    SQL92

    CREATE RULE 語句是 Postgres 語言的擴展. 在SQL92里沒有CREATE RULE 語句.



    |----------------------------------------------------------------------------------------|
                               版權聲明  版權所有 @zhyiwww
                引用請注明來源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-06-02 18:51 zhyiwww 閱讀(293) 評論(0)  編輯  收藏 所屬分類: database
    主站蜘蛛池模板: 亚洲无码高清在线观看| 在线观看人成视频免费| 亚洲综合国产一区二区三区| 野花视频在线官网免费1| 性做久久久久免费观看| 成全视频免费观看在线看| 黄色成人免费网站| 国外亚洲成AV人片在线观看| xxxxx做受大片在线观看免费| 亚洲乱码日产精品a级毛片久久 | 国产精品久久亚洲不卡动漫| 1000部拍拍拍18免费网站| 亚洲国产精品无码久久久| 国产黄色免费网站| 亚洲久热无码av中文字幕| 免费jjzz在线播放国产| 一个人看的www在线免费视频 | 亚洲av日韩av天堂影片精品| 亚洲av无码专区首页| 国产美女被遭强高潮免费网站| 国产精品亚洲专区无码WEB| 亚洲国产日韩在线观频| 中文字幕无码免费久久9一区9| 久久国产精品亚洲一区二区| 国产成人精品久久免费动漫| 亚洲乱亚洲乱妇24p| 亚洲精品国产高清嫩草影院| 日韩av无码免费播放| 亚洲人成在线播放| 国产麻豆免费观看91| 成人A毛片免费观看网站| 亚洲色图综合网站| 国产乱子伦精品免费女| 精品成人免费自拍视频| 在线观看亚洲AV日韩A∨| 国产中文在线亚洲精品官网| 4hu四虎最新免费地址| 美女18毛片免费视频| 亚洲综合精品一二三区在线| 国产无遮挡吃胸膜奶免费看 | 99在线视频免费观看|