<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

    事件是 SELECT, UPDATE,DELETEINSERT 之一.

    object

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

    condition

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

    query

    組成 action 的查詢可以是任何 SQL SELECT,INSERTUPDATEDELETE,或 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
    主站蜘蛛池模板: 亚洲欧洲第一a在线观看| 亚洲人成人无码网www电影首页| 亚洲成av人片在线看片| 热re99久久6国产精品免费| 亚洲av最新在线网址| 久操视频免费观看| 337p欧洲亚洲大胆艺术| 在线观看免费av网站| 久久久久亚洲精品日久生情| 亚洲综合免费视频| 久久精品亚洲AV久久久无码| 无限动漫网在线观看免费| 亚洲AV无码一区二区乱子仑 | 国产午夜亚洲精品理论片不卡| 国产亚洲精品美女2020久久| 免费国产精品视频| 一日本道a高清免费播放| 国产亚洲一区二区三区在线不卡| 美女被免费网站91色| 亚洲精品国产成人| 国产精品69白浆在线观看免费 | 4399好看日本在线电影免费| 色天使亚洲综合在线观看| 国产伦精品一区二区三区免费下载| 男女猛烈无遮掩视频免费软件| 国产日产亚洲系列最新| 久久国产乱子免费精品| 国产精品亚洲四区在线观看| 国产jizzjizz免费看jizz| 中文字幕在线免费看线人| 亚洲日韩乱码中文无码蜜桃| 日本久久久免费高清| 国产国产人免费人成成免视频| 亚洲国产精品一区| 免费无码又爽又高潮视频| 精品国产免费人成网站| 91精品国产亚洲爽啪在线影院| 精品久久洲久久久久护士免费| 国产免费伦精品一区二区三区| 亚洲成人高清在线观看| 免费中文字幕在线|