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

          CREATE TRIGGER

          Name

          CREATE TRIGGER — 創建一個新觸發器
          CREATE TRIGGER name { BEFORE | AFTER } { event [OR ...] }
              ON table FOR EACH { ROW | STATEMENT }
              EXECUTE PROCEDURE func ( arguments )
            

          輸入

          name

          觸發器名稱.

          table

          表名稱.

          event

          INSERT,DELETE 或 UPDATE 之一.

          func

          一個用戶提供的函數.

          輸出

          CREATE

          如果觸發器成功創建,返回此信息.

          描述

          CREATE TRIGGER 將向現有數據庫中增加一個新的觸發器. 觸發器將與表 table 相聯并且將執行聲明的函數 func

          觸發器可以聲明為在對記錄進行操作之前 在檢查約束之前和 INSERTUPDATEDELETE 執行前)或之后(在檢 查約束之后和完成 INSERTUPDATEDELETE 操作)觸發. 如果觸發器在事件之前,觸發器可能略過當前記錄 的操作或改變被插入的(當前)記錄(只對 INSERTUPDATE 操作有效). 如果觸發器在事件之后,所有更改,包括最后的插入, 更新或刪除對觸發器都是"可見"的.

          請參考 PostgreSQL 程序員手冊中SPI 和觸發器章節獲取更多信息.

          注意

          CREATE TRIGGERPostgres 語言擴展.

          只有表所有者可以就此表創建一個觸發器.

          在當前的版本(v7.0),STATEMENT 觸發器還沒有實現.

          請參考 DROP TRIGGER 獲取如何刪除觸發器的信息.

          用法

          在插入或更新表 films 之前檢查一下聲明的分銷商代碼是否存在于 distributors 表中:

          CREATE TRIGGER if_dist_exists
              BEFORE INSERT OR UPDATE ON films FOR EACH ROW
              EXECUTE PROCEDURE check_primary_key ('did', 'distributors', 'did');
             

          在刪除或更新一個分銷商的內容之前, 將所有記錄移到表 films 中:

          CREATE TRIGGER if_film_exists 
              BEFORE DELETE OR UPDATE ON distributors FOR EACH ROW
              EXECUTE PROCEDURE check_foreign_key (1, 'CASCADE', 'did', 'films', 'did');
             

          兼容性

          SQL92

          SQL92 里沒有 CREATE TRIGGER語句.

          上面第二個例子可以使用一個 FOREIGN KEY 約束實現:

          CREATE TABLE distributors (
              did      DECIMAL(3),
              name     VARCHAR(40),
              CONSTRAINT if_film_exists
              FOREIGN KEY(did) REFERENCES films
              ON UPDATE CASCADE ON DELETE CASCADE  
          );
              



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2006-06-02 18:41 zhyiwww 閱讀(419) 評論(0)  編輯  收藏 所屬分類: database
          主站蜘蛛池模板: 高碑店市| 永仁县| 天气| 巩义市| 绍兴市| 深水埗区| 陈巴尔虎旗| 肥西县| 汶上县| 靖宇县| 连山| 西藏| 准格尔旗| 巫溪县| 宁晋县| 磐安县| 建宁县| 丹东市| 准格尔旗| 多伦县| 克拉玛依市| 乌什县| 辉县市| 苏尼特右旗| 鹤壁市| 侯马市| 安新县| 宁远县| 河西区| 沙洋县| 嘉义市| 哈尔滨市| 赞皇县| 黑水县| 子洲县| 阳城县| 闽清县| 六安市| 筠连县| 平果县| 高陵县|